4

重複の可能性:
C# Datetimes: 異なるタイム ゾーンの変換

「西ヨーロッパ標準時」タイムゾーンの時間を表す「2012.12.04T08:35:00」のような文字列があります。

さて、これを UTC 時間の ac# DateTime オブジェクトに適切に変換したいと思います。

これを行う適切な方法は何ですか?

4

4 に答える 4

5

特定のタイムゾーン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
于 2012-12-04T09:28:20.223 に答える
1

DateTimeOffset.TryParse メソッドを使用できます。

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

ここの投稿を参照してください

文字列をオフセット付きのDateTimeに変換する

于 2012-12-04T11:55:49.803 に答える
0

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

于 2012-12-04T09:28:07.910 に答える
-2

Convert.ToDateTime() を使用できます。それはうまくいくはずです。

于 2012-12-04T10:23:53.727 に答える