15

string s = "May 16, 2010 7:20:12 AM CDTDateTimeオブジェクトに変換したいものがあります。以下のコードでは、既知の形式でテキストを解析しようとすると、日付形式を変換できないというエラーが発生します。

timeStamp = matches[0].Groups[1].Value;
dt = DateTime.ParseExact(timeStamp, "MMM dd, yyyy H:mm:ss tt", null);

タイムゾーンはCDTUTCとして入力されます...そして、問題の原因やフォーマットの原因は何だと思いますか?

4

2 に答える 2

9

中部夏時間

これを試して:

string dts = "May 16, 2010 7:20:12 AM CDT";
DateTime dt = 
    DateTime.ParseExact(dts.Replace("CDT", "-05:00"), "MMM dd, yyyy H:mm:ss tt zzz", null);

編集:

夏時間については、DateTime.IsDaylightSavingTimeおよびTimeZone.CurrentTimeZoneを考慮してください。

カスタムの日付と時刻の形式の文字列

于 2012-08-08T21:41:57.537 に答える
8

DateTimeが明確にDateTimeKind.Utcであることを確認してください。「GMT」は避けてください。夏時間の場合はあいまいです。

    var dt = new DateTime(2010, 1, 1, 1, 1, 1, DateTimeKind.Utc);
    string s = dt.ToLocalTime().ToString("MMM dd, yyyy HH:mm:ss tt \"GMT\"zzz");

出力が表示されます:2010年12月31日19:01:01 pm GMT-06:00

詳細については、このリンクを参照してください

于 2012-08-09T01:29:47.693 に答える