时间time_t和string(char*)格式互转
来源:互联网 发布:淘宝助理 未知错误 1 编辑:程序博客网 时间:2024/04/30 06:25
在程序中,我们经常性的会使用到时间格式的转化,比如讲time_t转化成string,或者反过来转,下面就是实现的代码。分为 2009-3-24 和 2009-3-24 0:00:08两种时间格式。时间格式:2009-3-24 :
所有的代码都经过测试,不会有内存泄漏和句柄泄漏,可以放心使用~
另附:
结构tm的定义为:
#include <sys/time.h>/* string to time_t 时间格式 2009-3-24*/int API_StringToTime(const string &strDateStr,time_t &timeData){ char *pBeginPos = (char*) strDateStr.c_str(); char *pPos = strstr(pBeginPos,"-"); if(pPos == NULL) { return -1; } int iYear = atoi(pBeginPos); int iMonth = atoi(pPos + 1); pPos = strstr(pPos + 1,"-"); if(pPos == NULL) { return -1; } int iDay = atoi(pPos + 1); struct tm sourcedate; bzero((void*)&sourcedate,sizeof(sourcedate)); sourcedate.tm_mday = iDay; sourcedate.tm_mon = iMonth - 1; sourcedate.tm_year = iYear - 1900; timeData = mktime(&sourcedate); return 0;} /* time_t to string*/int API_TimeToString(string &strDateStr,const time_t &timeData){ char chTmp[15]; bzero(chTmp,sizeof(chTmp)); struct tm *p; p = localtime(&timeData); p->tm_year = p->tm_year + 1900; p->tm_mon = p->tm_mon + 1; snprintf(chTmp,sizeof(chTmp),"%04d-%02d-%02d", p->tm_year, p->tm_mon, p->tm_mday); strDateStr = chTmp; return 0;}时间格式 2009-3-24 0:00:08 :
/* string to time_t 时间格式 2009-3-24 0:00:08 或 2009-3-24 */int API_StringToTimeEX(const string &strDateStr,time_t &timeData){ char *pBeginPos = (char*) strDateStr.c_str(); char *pPos = strstr(pBeginPos,"-"); if(pPos == NULL) { printf("strDateStr[%s] err \n", strDateStr.c_str()); return -1; } int iYear = atoi(pBeginPos); int iMonth = atoi(pPos + 1); pPos = strstr(pPos + 1,"-"); if(pPos == NULL) { printf("strDateStr[%s] err \n", strDateStr.c_str()); return -1; } int iDay = atoi(pPos + 1); int iHour=0; int iMin=0; int iSec=0; pPos = strstr(pPos + 1," "); //为了兼容有些没精确到时分秒的 if(pPos != NULL) { iHour=atoi(pPos + 1); pPos = strstr(pPos + 1,":"); if(pPos != NULL) { iMin=atoi(pPos + 1); pPos = strstr(pPos + 1,":"); if(pPos != NULL) { iSec=atoi(pPos + 1); } } } struct tm sourcedate; bzero((void*)&sourcedate,sizeof(sourcedate)); sourcedate.tm_sec = iSec; sourcedate.tm_min = iMin; sourcedate.tm_hour = iHour; sourcedate.tm_mday = iDay; sourcedate.tm_mon = iMonth - 1; sourcedate.tm_year = iYear - 1900; timeData = mktime(&sourcedate); return 0;}/* time_t to string 时间格式 2009-3-24 0:00:08 */int API_TimeToStringEX(string &strDateStr,const time_t &timeData){ char chTmp[100]; bzero(chTmp,sizeof(chTmp)); struct tm *p; p = localtime(&timeData); p->tm_year = p->tm_year + 1900; p->tm_mon = p->tm_mon + 1; snprintf(chTmp,sizeof(chTmp),"%04d-%02d-%02d %02d:%02d:%02d", p->tm_year, p->tm_mon, p->tm_mday,p->tm_hour,p->tm_min,p->tm_sec); strDateStr = chTmp; return 0;}
所有的代码都经过测试,不会有内存泄漏和句柄泄漏,可以放心使用~
另附:
结构tm的定义为:
struct tm{int tm_sec;int tm_min;int tm_hour;int tm_mday;int tm_mon;int tm_year;int tm_wday;int tm_yday;int tm_isdst;};int tm_sec 代表目前秒数,正常范围为0-59,但允许至61秒int tm_min 代表目前分数,范围0-59int tm_hour 从午夜算起的时数,范围为0-23int tm_mday 目前月份的日数,范围01-31int tm_mon 代表目前月份,从一月算起,范围从0-11int tm_year 从1900 年算起至今的年数int tm_wday 一星期的日数,从星期一算起,范围为0-6int tm_yday 从今年1月1日算起至今的天数,范围为0-365int tm_isdst 日光节约时间的旗标
- 时间time_t和string(char*)格式互转
- 时间time_t和string(char*)格式互转
- 时间time_t和string(char*)格式互转
- 时间time_t和string(char*)格式互转
- c++类型转换String^,int,string,char*,时间格式字符串
- 时间字符串转time_t
- 字符串转时间(time_t)
- 字符串转时间(time_t)
- 字符串时间转化成time_t格式
- 字符串和时间转换time_t
- 字符串和时间转换time_t
- string 转换为 32位时间time_t
- 【转】struct tm 和 time_t 时间和日期的使用方法
- c++ string和char* char[]的互转
- time_t和SYSTEMTIME之间的互转
- CRT中的时间(time_t和tm)
- CRT中的时间(time_t和tm)
- CRT中的时间(time_t和tm)
- 【学习点滴-数据结构-二叉树】二叉查找树源码实现
- 【windows8开发】异步编程入门篇之 Concurrency::task(C++)
- JfreeChart解决中文乱码
- 架设VS2003项目
- crontab的用法---linux定时任务
- 时间time_t和string(char*)格式互转
- nginx 各参数翻译,作用
- 获取EXTJS中的FormPanel的所有控件值和属性
- android InputStream 转 String
- 页面中汉字,数字,字符的长度
- Class.forName()使用详解
- 软件工程师的视角看网络(网络那点事)
- android文件解析InputStream问题解决
- 设计模式12——Decorator设计模式