0

UTCの日付を必要とするWebサービスを利用しようとしています。だから私は見つけました:

private static string GetDate(DateTime DateTime)
{
    DateTime UtcDateTime = TimeZoneInfo.ConvertTimeToUtc(DateTime);
    return XmlConvert.ToString(UtcDateTime, XmlDateTimeSerializationMode.Utc);
}

私が行った場合:

DateTime DT1 = new DateTime(2012, 3, 25);
DateTime DT2 = new DateTime(2012, 3, 26);
string s1 = GetDate(DT1);
string s2 = GetDate(DT2);

s1に含まれるもの:

2012-03-25T00:00:00Z

s2には次のものが含まれます。

2012-03-25T23:00:00Z

s2に含まれていないのはなぜですか。

2012-03-26T00:00:00Z

?ありがとう。

4

1 に答える 1

3

ロンドンのタイムゾーンでは、3月25日の午前1時(現地時間)に夏時間が移行し、UTC+0からUTC+1に移行しました。したがって、英国の3月26日の現地の深夜はUTCで正確に2012-03-2523:00:00でした。それが問題の原因であることはほぼ間違いありません。

あなたは本当にあなたが本当に何を表現したいのかを理解する必要があります。残念ながらDateTime、明快さの点でここであなたを助けるのはあまり良くありません。私のNodaTimeライブラリの使用を検討することをお勧めします。そうでない場合は、少なくとも同様の概念でコードを文書化してください。(をに変換しようとしているようです。そのためには、実際にどのタイムゾーンを意味するかを理解する必要があります。)LocalDateInstant

あなたが逃げることができるかもしれないことは完全に可能です:

DateTime DT1 = new DateTime(2012, 3, 25, 0, 0, 0, DateTimeKind.Utc);
DateTime DT2 = new DateTime(2012, 3, 26, 0, 0, 0, DateTimeKind.Utc);
于 2012-09-24T12:57:39.743 に答える