我使用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/

10-10 02:00