概述

工作中我们在网络传输时使用time_t来传输时间,在显示时使用字符串来显示,下面是一个日期转换类的实现,方便以后使用:

// DateTime.hpp
#ifndef _DATETIME_H
#define _DATETIME_H #include <ctime>
#include <string>
#include <type_traits> class DateTime
{
public:
template<typename T>
static typename std::enable_if<std::is_same<std::string, T>::value, std::string>::type convert(time_t t)
{
return time2string(t);
} template<typename T>
static typename std::enable_if<std::is_same<time_t, T>::value, time_t>::type convert(const std::string& timeStr)
{
return string2time(timeStr);
} static std::string currentTime()
{
return time2string(time(nullptr));
} private:
static std::string time2string(time_t t)
{
struct tm* tmNow = localtime(&t);
char timeStr[sizeof("yyyy-mm-dd hh:mm:ss")] = {'\0'};
std::strftime(timeStr, sizeof(timeStr), "%Y-%m-%d %H:%M:%S", tmNow);
return timeStr;
} static time_t string2time(const std::string& timeStr)
{
struct tm stTm;
sscanf(timeStr.c_str(), "%d-%d-%d %d:%d:%d",
&(stTm.tm_year),
&(stTm.tm_mon),
&(stTm.tm_mday),
&(stTm.tm_hour),
&(stTm.tm_min),
&(stTm.tm_sec)); stTm.tm_year -= 1900;
stTm.tm_mon--;
stTm.tm_isdst = -1; return mktime(&stTm);
}
}; #endif

下面是DateTime的具体使用例子:

// main.cpp
#include <iostream>
#include "DateTime.hpp" int main()
{
std::string timeStr = DateTime::convert<std::string>(time(nullptr));
std::cout << timeStr << std::endl;
std::cout << DateTime::convert<time_t>(timeStr) << std::endl;
std::cout << DateTime::currentTime() << std::endl << std::endl; return 0;
}

该例子的github地址:https://github.com/chxuan/samples/tree/master/DateTime

C++实现日期转换类DateTime的更多相关文章

  1. C#日期转换类

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Te ...

  2. 日期转换类 DateConverter.java

    package com.util; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.D ...

  3. asp中将文本框内的日期转换成datetime类型的数据

    将字符类型的日期转化为DateTime类型主要有以下方法: 方法一:Convert.ToDateTime(string) string格式有要求,必须是yyyy-MM-dd hh:mm:ss 方法二: ...

  4. Sql 中常用日期转换Convert(Datetime)

    CONVERT(data_type,expression[,style]) convert(varchar(10),字段名,转换格式) 说明:此样式一般在时间类型(datetime,smalldate ...

  5. Sql 中常用日期转换Convert(Datetime) convert datetime

    Convert(data_type,expression[,style]) Convert(varchar(10),字段名,转换格式) 说明:此样式一般在时间类型(datetime,smalldate ...

  6. mysql 查询 int类型日期转换成datetime类型

    数据库日期类型是int类型的,该查询结果是datetime类型的 SELECT from_unixtime( `时间列名` ) FROM 表名 如果原来类型是datetime类型,查询结果要是int类 ...

  7. js moment.js日期操作类 datetime,日期操作,dayjs

    http://momentjs.com/ JS时间处理插件MomentJS https://juejin.im/post/5a2bdc55f265da432b4abf5e Day.js 2kB超轻量时 ...

  8. C# 字符串string类型转换成DateTime类型 或者 string转换成DateTime?(字符串转换成可空日期类型)

    在c#中,string类型转换成DateTime类型是经常用到的,作为基本的知识,这里在此做个小结.一般来说可以使用多种方法进行转换,最常用的就是使用Convert.ToDateTime(string ...

  9. java日期转换

    在java开发过程中,时间的转换时必须掌握的=========下面把时间转换做个总结,有可能不是很全面 时间格式只有两种 yyyy-MM-DD yyyy/MM/DD 时间的类型:字符串类型.sql类型 ...

随机推荐

  1. First & First

    First有记录则返回,否则返回null FirstOrDefault有记录则返回,否则NEW一个新的实体对象返回  

  2. Powershell导入订阅号(以Azure中国版为例)

    1. 首先,您需要安装Windows Azure Powershell.下载的链接为:http://go.microsoft.com/?linkid=9811175&clcid=0x409 2 ...

  3. oracle出现的小问题

    oracle无法解析指定的标识符:检查oracle的数据库实例名是否正确. oracle增大db_files:alter system set db_files=1000 scope=spfile;之 ...

  4. POJ 2774 Long Long Message (后缀数组模板)

    借用罗大神的模板,开始搞后缀数组 #include <cstdio> #include <iostream> #include <cstring> #include ...

  5. HDU2819Swap(二分图最大匹配)

    题目链接  http://acm.hdu.edu.cn/showproblem.php?pid=2819 题目大意很明确,交换图的某些行或者是某些列(可以都换),使得这个N*N的图对角线上全部都是1. ...

  6. 实现jsp网站添加到收藏夹

    var ctrl = (navigator.userAgent.toLowerCase()).indexOf('mac') != -1 ? 'Command/Cmd': 'CTRL';         ...

  7. linux内核完全注释之微型计算机组成结构

    计算机组成原理 1.传统计算机计算机组成框图 CPU通过地址线.数据线.控制线组成的本地总线(或内部总线),与系统的其他部分进行数据通信,地址线用于提供内存或I/O设备的地址,指明所需读写数据的具体操 ...

  8. C和设计原则

    ---DO NOT REPEAT YOURSELF--- 建设性的懒惰,是程序员的第一美德.最简单的懒惰就是不要重复自己,简单到一个命名规则,例如C语言中: int osip_list_init (o ...

  9. TemplateBinding vs TemplatedParent【PluraSight】

    TemplateBinding:TemplateBinding是一个Markup Extension

  10. OC: NSString、NSArray、NSNumber

    数组参考: 参考1  参考2  参考3 //字符串 //1.获取字符串的长度: //表情符号最少占两个字节 NSString * s = @"中文字符串