读书人

字符串转换时间类型,该如何处理

发布时间: 2012-04-07 17:31:50 作者: rapoo

字符串转换时间类型
字符串格式如下
20071010122345

要把它转换成时间类型,
知道要把 取出来 赋给struct tm 结构,
但是不知道怎么取出2007 , 10, 10 ,12 这种数据来

tm_year 是int 的

然后struct tm 结果 又怎么变成time_t 呢?

[解决办法]
用sscanf格式化字符串
赋值时注意表示的起至值 年减去100,月减去1
mktime来转成time_t

[解决办法]
指针从前向后遍历,前四个放到year里,再接着两个放到month里,同理往后
[解决办法]
说错了,年不是减去100,是减去1900
[解决办法]
仅供参考

C/C++ code
#include <time.h>#include <stdio.h>void main()  {      char *t = " 20071010122345";    long year,month,day;    struct tm time1;        sscanf(t, "%4d%2d%2d",&year,&month,&day);    time1.tm_year = year -1900;    time1.tm_mon = month -1;    time1.tm_mday = day;}
[解决办法]
第一个: sscanf()从字符串读取数据;
第二个:time_t mktime( struct tm *timeptr );

读书人网 >C++

热点推荐