私のマシンは PDT を使用しており、DateTime.Now と言うと、2012 年 9 月 18 日の午前 6:00:00 に相当する現地時間を取得します。この日時インスタンスに相当する UTC を取得したい。UTC 時間は PDT より 7 時間早く、PST より 8 時間早くなります。サマータイムを自動で考慮したい。
これを行う方法について何か考えはありますか?
使用できます
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 によるプロジェクト) を参照してください。
日時を使用します。ToUniversalTimeメソッド。
任意の日付をタイム ゾーンから UTC に変換する場合は、次のようにします。
TimeZone.CurrentTimeZone.ToUniversalTime(myLocalDateTime)
UTC から戻す場合は、次のようにします。
TimeZone.CurrentTimeZone.ToLocalTime(myUtcDateTime)