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));
} 东八区的问题? 二楼真相,时区问题。
页:
[1]