UTC
日付文字列をに変換する必要がありますDateTimeOffsets
。
これは、コンピューターのタイムゾーンとは異なるタイムゾーンで機能する必要があります。 たとえば、現在のコンピュータのタイムゾーンは+02:00ですが、オフセットが-4:00のDateTimeOffsetを作成したいと思います。
私はすでにstackoverflowに関する多くの質問を読んでいますが、どれも私の問題を解決しませんでした。
それは私がする必要があることです:
入力:「2012-11-20T00:00:00Z」
出力: DateTimeOffset:
- 2012-11-2000 :00のUtcDateTime
- 定義されたタイムゾーンの正しいUTCオフセット(この例では01:00)
- LocalDateTime:2012-11-20 01:00 (= UtcDateTime +オフセット)
もちろん、夏時間を考慮に入れる必要があります。
編集:物事をさらに明確にするために、次のコードスニペットを完成させてみてください。
DateTimeOffset result;
const string dateString = "2012-11-20T00:00:00Z";
var timezone = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time"); //this timezone has an offset of +01:00:00 on this date
//do conversion here
Assert.AreEqual(result.Offset, new TimeSpan(1, 0, 0)); //the correct utc offset, in this case +01:00:00
Assert.AreEqual(result.UtcDateTime, new DateTime(2012, 11, 20, 0, 0, 0)); //equals the original date
Assert.AreEqual(result.LocalDateTime, new DateTime(2012, 11, 20, 1, 0, 0));