2

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 );

最初はprintftempo1時間差でプリント中です。2番目に、正しい値を出力しています。

私はMs DOS 6.0OS でアプリケーションを実行しており、アプリケーションは でコンパイルされていWatcom v1.3ます。

情報はどこDaylight Savings Timeから来たのですか?DOS はこの情報を保持していますか?

4

1 に答える 1

0

クリアsttime.tm_isdstすることmktimeで、実際よりも 1 時間遅れていることを示しています (DST にいる場合は、sttime.tm_isdst設定されていると言うので、そうであるように見えます)。

于 2012-08-29T20:12:32.737 に答える