0

夏時間の変更があるたびに構成を変更し続ける必要はありません。これは私が現在行っていることですが、「標準」時間を使用しているため機能しません。

TimeZoneInfo timeZone = TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time")
TimeZoneInfo.ConvertTimeToUtc(dateTime, timeZone); // This doesn't take into account that it's daylight savings...

1 つのサイズですべてのソリューションに適合するものはありますか。日時と「米国東海岸」などの場所を指定すると、Utc の時刻が表示されますか?

4

2 に答える 2

5

マッピングテーブルを使用してタイムゾーンIDをデータベースに保存することで、以前にそれを行いました。つまり、結果を含むテーブルTimeZone.GetSystemTimeZones()

実際に TimeZoneInfo を使用する必要はありません。FindSystemTimeZoneById()ただし、 のオーバーロードの 1 つを使用して変換を行うことができますTimeZoneInfo.ConvertTimeBySystemTimeZoneId()。このメソッドには、値を受け取るオーバーロードと、DateTime値を受け取るオーバーロードがありDateTimeOffsetます (明確な時点を指定するため、これらのオーバーロードが適しています)。

例えば

TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now, "New Zealand Standard Time", "UTC")

データベースに保存されているオフセットではなく、システムのタイム ゾーン ID を使用する本当の利点は、夏時間が によって自動的に処理されることですTimeZoneInfo.ConvertTimeBySystemTimeZoneId

この msdn も役立つかもしれません>

http://msdn.microsoft.com/en-us/library/bb382058.aspx

于 2013-03-14T11:28:07.603 に答える