15

我有一个string s = "May 16, 2010 7:20:12 AM CDT我想转换为 DateTime 对象。在下面的代码中,尝试解析具有已知格式的文本时,出现日期格式无法转换错误。

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

时区以 CDT UTC 的形式出现......我认为是什么导致了问题或我的格式?

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.IsDaylightSavingTimeTimeZone.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 回答