|
系统中用到C的标准库函数mktime,根据年月日时分秒,获取一个从1970-1-1 00:00:00开始的秒数。实际测试时发现,获得的秒数时从1970-1-1 08:00:00开始的,而且将0传入localtime函数,得到的时间也是1970-1-1 08:00:00。
按照mktime相关的资料,里面描述的都是以1970-1-1 00:00:00开始,十分不理解为何会这样?
测试环境:Win7-64bit
IDE :VS2013
测试代码如下(直接调用即可):
- void mktime_test(void)
- {
- struct tm tm_time;
- time_t time_s;
- memset(&tm_time, 0, sizeof(tm_time));
- tm_time.tm_isdst = 0;
- tm_time.tm_year = 1970 - 1900;
- tm_time.tm_mon = 1 - 1; /* from 0 - 11 */
- tm_time.tm_mday = 1; /* from 1 - 31 */
- tm_time.tm_hour = 8; /* from 0 - 23 */
- tm_time.tm_min = 0; /* from 0 - 59 */
- tm_time.tm_sec = 0; /* from 0 - 59 */
- time_s = mktime(&tm_time);
- printf("mk_time_test: %u-%u-%u %u:%u:%u %u \r\n", \
- tm_time.tm_year + 1900,
- tm_time.tm_mon + 1,
- tm_time.tm_mday,
- tm_time.tm_hour,
- tm_time.tm_min,
- tm_time.tm_sec,
- time_s);
- struct tm * timeinfo;
- timeinfo = localtime(&time_s);
- printf("Current local time and date: %s", asctime(timeinfo));
- }
复制代码 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!
|