C++实现日期转换类DateTime
概述
工作中我们在网络传输时使用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的更多相关文章
- C#日期转换类
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Te ...
- 日期转换类 DateConverter.java
package com.util; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.D ...
- asp中将文本框内的日期转换成datetime类型的数据
将字符类型的日期转化为DateTime类型主要有以下方法: 方法一:Convert.ToDateTime(string) string格式有要求,必须是yyyy-MM-dd hh:mm:ss 方法二: ...
- Sql 中常用日期转换Convert(Datetime)
CONVERT(data_type,expression[,style]) convert(varchar(10),字段名,转换格式) 说明:此样式一般在时间类型(datetime,smalldate ...
- Sql 中常用日期转换Convert(Datetime) convert datetime
Convert(data_type,expression[,style]) Convert(varchar(10),字段名,转换格式) 说明:此样式一般在时间类型(datetime,smalldate ...
- mysql 查询 int类型日期转换成datetime类型
数据库日期类型是int类型的,该查询结果是datetime类型的 SELECT from_unixtime( `时间列名` ) FROM 表名 如果原来类型是datetime类型,查询结果要是int类 ...
- js moment.js日期操作类 datetime,日期操作,dayjs
http://momentjs.com/ JS时间处理插件MomentJS https://juejin.im/post/5a2bdc55f265da432b4abf5e Day.js 2kB超轻量时 ...
- C# 字符串string类型转换成DateTime类型 或者 string转换成DateTime?(字符串转换成可空日期类型)
在c#中,string类型转换成DateTime类型是经常用到的,作为基本的知识,这里在此做个小结.一般来说可以使用多种方法进行转换,最常用的就是使用Convert.ToDateTime(string ...
- java日期转换
在java开发过程中,时间的转换时必须掌握的=========下面把时间转换做个总结,有可能不是很全面 时间格式只有两种 yyyy-MM-DD yyyy/MM/DD 时间的类型:字符串类型.sql类型 ...
随机推荐
- First & First
First有记录则返回,否则返回null FirstOrDefault有记录则返回,否则NEW一个新的实体对象返回
- Powershell导入订阅号(以Azure中国版为例)
1. 首先,您需要安装Windows Azure Powershell.下载的链接为:http://go.microsoft.com/?linkid=9811175&clcid=0x409 2 ...
- oracle出现的小问题
oracle无法解析指定的标识符:检查oracle的数据库实例名是否正确. oracle增大db_files:alter system set db_files=1000 scope=spfile;之 ...
- POJ 2774 Long Long Message (后缀数组模板)
借用罗大神的模板,开始搞后缀数组 #include <cstdio> #include <iostream> #include <cstring> #include ...
- HDU2819Swap(二分图最大匹配)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2819 题目大意很明确,交换图的某些行或者是某些列(可以都换),使得这个N*N的图对角线上全部都是1. ...
- 实现jsp网站添加到收藏夹
var ctrl = (navigator.userAgent.toLowerCase()).indexOf('mac') != -1 ? 'Command/Cmd': 'CTRL'; ...
- linux内核完全注释之微型计算机组成结构
计算机组成原理 1.传统计算机计算机组成框图 CPU通过地址线.数据线.控制线组成的本地总线(或内部总线),与系统的其他部分进行数据通信,地址线用于提供内存或I/O设备的地址,指明所需读写数据的具体操 ...
- C和设计原则
---DO NOT REPEAT YOURSELF--- 建设性的懒惰,是程序员的第一美德.最简单的懒惰就是不要重复自己,简单到一个命名规则,例如C语言中: int osip_list_init (o ...
- TemplateBinding vs TemplatedParent【PluraSight】
TemplateBinding:TemplateBinding是一个Markup Extension
- OC: NSString、NSArray、NSNumber
数组参考: 参考1 参考2 参考3 //字符串 //1.获取字符串的长度: //表情符号最少占两个字节 NSString * s = @"中文字符串