wzd5230 发表于 2018-8-15 18:40:31

mktime函数使用过程中的疑问

系统中用到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));
}

prince2010 发表于 2018-8-15 18:54:30

东八区的问题?

wzd5230 发表于 2018-8-15 19:20:57

二楼真相,时区问题。
页: [1]
查看完整版本: mktime函数使用过程中的疑问