C#DateTime.TryParseExact使时区错误

时间:2014-05-09 18:20:33

标签: c# datetime timezone tryparse

我正在尝试解析包含一些时区信息的日期时间字符串(2014年5月1日美国东部时间下午9:45):

DateTime RecordedDateTime;
string fixedRecordedDateTime = "Thu May 01 21:45:00 +0500 2014";
string[] dateFormats = { "ddd MMM dd HH:mm:ss zzz yyyy" , "ddd MMM dd HH:mm:ss K yyyy" };
DateTime.TryParseExact(fixedRecordedDateTime, dateFormats, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out RecordedDateTime);

DateTime对象得到5/1/2014 12:45 PM当地时间(我在EST)

如果我使用(2014年5月1日下午9点45分在PST时区):

string fixedRecordedDateTime = "Thu May 01 21:45:00 +0800 2014";

DateTime对象获取当地时间5/1/2014 09:45

我不明白出了什么问题,为什么我在提供时区信息后无法纠正当地时间。

我正在尝试使用DateTime而不是DateTimeOffset,无论如何都要正确解析?

1 个答案:

答案 0 :(得分:2)

string fixedRecordedDateTime = "Thu May 01 21:45:00 +0500 2014";

UTC + 0500是21:45。这将是UTC的16:45,或EDT的12:45(UTC-0400)。我认为你在偏移中得到了你的+和 - 反转。