DOS中的“夏令时”

时间:2012-08-29 19:03:04

标签: c dos ctime

我在C应用程序中使用time(NULL)函数来获取自1970年以来的秒数。我注意到它返回的信息有1小时的差异。

然后我尝试使用tm将结果转换为localtime结构,然后我注意到tm_isdst字段已设置。

代码是这样的:

time_t tempo;
struct tm sttime;

memset( &sttime, 0, sizeof( sttime ) );

tempo = time( NULL );  

printf( "%d\n", tempo );

sttime = *( localtime( &tempo ) );    
sttime.tm_isdst = 0;
tempo = mktime( &sttime );

printf( "%d\n", tempo );

在第一个printf中,tempo正在打印,差异为一小时。在第二个,它打印正确的值。

我在Ms DOS 6.0操作系统中运行该应用程序,正在使用Watcom v1.3编译该应用程序。

Daylight Savings Time信息来自何处? DOS有这个信息吗?

1 个答案:

答案 0 :(得分:0)

通过清除sttime.tm_isdst,你告诉mktime它比实际时间晚一个小时(如果你在DST,那么你似乎是因为你说{{1}已设置)。