15

私のマシンは PDT を使用しており、DateTime.Now と言うと、2012 年 9 月 18 日の午前 6:00:00 に相当する現地時間を取得します。この日時インスタンスに相当する UTC を取得したい。UTC 時間は PDT より 7 時間早く、PST より 8 時間早くなります。サマータイムを自動で考慮したい。

これを行う方法について何か考えはありますか?

4

3 に答える 3

27

使用できます

var now = DateTime.UtcNow;

既存の DateTime を変換するには、タイム ゾーン情報があると仮定して、 DateTime.ToUniversalTime()を使用できます。たとえば、DateTimeインスタンスを取得した場合

var localNow = DateTime.Now;  // Has timezone info

タイムゾーン情報が含まれます。たとえば、ティック カウントを使用して作成する場合、明示的に指定しない限り、タイムゾーン情報は含まれません。

var unspecifiedNow = new DateTime(someTickCount); // No timezone info

.NET でのタイムゾーンの処理は最適ではないことに注意してください。タイムゾーンに関係する複雑なことをする必要がある場合は、Noda Time (Jon Skeet によるプロジェクト) を参照しください

于 2012-09-18T18:46:40.637 に答える
9

日時を使用します。ToUniversalTimeメソッド。

于 2012-09-18T18:48:48.203 に答える
7

任意の日付をタイム ゾーンから UTC に変換する場合は、次のようにします。

TimeZone.CurrentTimeZone.ToUniversalTime(myLocalDateTime)

UTC から戻す場合は、次のようにします。

TimeZone.CurrentTimeZone.ToLocalTime(myUtcDateTime)
于 2012-09-18T18:49:13.290 に答える