重複の可能性:
C# Datetimes: 異なるタイム ゾーンの変換
「西ヨーロッパ標準時」タイムゾーンの時間を表す「2012.12.04T08:35:00」のような文字列があります。
さて、これを UTC 時間の ac# DateTime オブジェクトに適切に変換したいと思います。
これを行う適切な方法は何ですか?
重複の可能性:
C# Datetimes: 異なるタイム ゾーンの変換
「西ヨーロッパ標準時」タイムゾーンの時間を表す「2012.12.04T08:35:00」のような文字列があります。
さて、これを UTC 時間の ac# DateTime オブジェクトに適切に変換したいと思います。
これを行う適切な方法は何ですか?
特定のタイムゾーンTimeZoneInfo
間で変換するときに使用します。
TimeZoneInfo westInfo =
TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
DateTime westTime = DateTime.Parse("2012.12.04T08:35:00");
DateTime utcTime = TimeZoneInfo.ConvertTimeToUtc(westTime, westInfo);
混乱に対処するには:
DateTime.Parse
ここで使用されているように、指定された値のタイムゾーンについては何も想定されていません。ITはそれをので保存しDateTimeKind
ますUnspecified
。TimeZoneInfo.ConvertTimeToUtc
ここで使用されているように、日時を想定し、明示的に指定されたタイムゾーンにあるかのように読み取り、UTCに変換します。Unspecified
DateTimeOffset.TryParse メソッドを使用できます。
http://msdn.microsoft.com/en-us/library/bb397029.aspx
ここの投稿を参照してください
MSDN から読み取ると、次のように文字列を DateTime オブジェクトに解析できるはずです。
DateTime convertedDate = DateTime.Parse("2012.12.04T08:35:00");
http://msdn.microsoft.com/en-us/library/1k1skd40.aspx
を に変更する必要がある場合があり.
ます-
。
次に、これを使用して UTC を取得する必要があります。
convertedDate.ToUniversalTime();
http://msdn.microsoft.com/en-us/library/system.datetime.touniversaltime.aspx
編集(コメントからの修正):
TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
DateTime convertedTime = TimeZoneInfo.ConvertTimeToUtc(convertedDate, tst);
http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx
Convert.ToDateTime() を使用できます。それはうまくいくはずです。