我使用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是否保存此信息? 最佳答案
通过清除sttime.tm_isdst
可以告诉mktime
它比实际时间晚了一个小时(如果您在DST中,这似乎是因为您说sttime.tm_isdst
已设置)。
关于c - DOS中的“夏时制”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12184836/