0

私のタイムゾーンは、UTC から 5 時間遅れている米国東部標準時です。とすれば:

struct tm t = { 0, 30, 15, 10, 3, 112, 0, 0, -1 };
time_t utc_in_timet = _mkgmtime(&t);

struct tm tt = { 0 };
localtime_s(&tt, &utc_in_timet);

localtime_s が戻ると、tt は 1 時間ずれています。そこには 10:30 ではなく 11:30 があります。

私は何が欠けていますか?

4

4 に答える 4

3

夏時間と関係があると思います。現在のタイムゾーンはEST(-5)ですか?システムでEDT(-4)を使用する必要があるようです。

于 2012-04-10T15:31:38.510 に答える
1

ローカル タイムゾーンを確認します。イングランド (ロンドンなど) と米国の東海岸の両方が現在夏時間になっているため、これが問題のようです (誰かが既に述べたように)。米国東海岸の場合、EDT は 4 時間異なります。

于 2012-04-10T15:53:21.627 に答える
1

私のマシンであなたのコードを試してみましたが、正しく動作しました (私のタイムゾーンは GMT+2 です)。システムに夏時間自体をチェックするように指示しているため ( tmisの最後のパラメーター-1)、実際には EDT を使用しているため、GMT-4 が提供されます。

3月 ( ) をに置き換える2と、日付が夏時間の直前の 3 月 10 日になります。その場合、予想される10:30が得られるに違いありません。

于 2012-04-10T15:54:25.723 に答える
0

問題は月が3月だと思った: struct tm t = { 0, 30, 15, 10, 3 , 112, 0, 0, -1 }; 次に、サマータイムの問題です。しかし、Gorpik が以下で指摘しているように、「月は 0 から 11 までなので、4 月は実際には 3 です」。

だから、私はチェックしました - それは正しい +2UTC であるハイファで 18:30 を示しています。

于 2012-04-10T15:48:07.943 に答える