c语言 - "Daylight Savings Time" 在 DOS 中



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

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

代码如下:

time_t tempo;
struct tm sttime;
memset( &sttime, 0, sizeof( sttime ) );
tempo = time( NULL );  
printf( "%dn", tempo );
sttime = *( localtime( &tempo ) );    
sttime.tm_isdst = 0;
tempo = mktime( &sttime );
printf( "%dn", tempo );

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

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

Daylight Savings Time信息来自哪里?DOS保存这些信息吗?

通过清除sttime.tm_isdst,您告诉mktime它比实际时间晚了一个小时(如果您处于夏令时,则似乎是因为您说设置了sttime.tm_isdst)。

相关内容

  • 没有找到相关文章

最新更新