2011-10-12 128 views
1

我得到的字符串形式:C#日期时间格式和存储时区信息

“2011-10-12T11:55:34.803EST”

“2011-10-05T16:58:05.043GMT”

我想将这些值存储为DateTime对象,但是一个简单的DateTime.Parse()不起作用。无论如何,我可以将这些字符串转换为DateTime对象吗?据我所知,DateTime不知道时区。

+1

此帖可能有帮助:http://stackoverflow.com/questions/179940/c-convert-utc-gmt-time-to-local-time –

+0

检查这个帖子http://stackoverflow.com/questions/ 241789/parse-datetime -with-timezone-of-form-pst-cest-utc-etc –

+1

你为什么试图根据不同的时区存储时间。如果您要处理数据,则应在单个时区中存储时间和日期。如果你只是简单地显示它,那么就把它存储起来就像你一样,然后用相同的方式显示它。 –

回答

1

可以以Z取代GMT,也将努力:

string date = "2011-10-05T16:58:05.043GMT".Replace("GMT", "z"); 
Console.WriteLine(DateTime.Parse(date)); 

祖鲁时间

+0

谢谢IAbstractDownvoteFactor。使用“EST”的时间如何? – Flack

+0

这很麻烦,因为EST对.NET没有任何意义。您可能需要查找表。从技术上讲,你可以用-500代替EST,但它仍然可以工作。所以如果你只有GMT和EST,我认为这是合理的 – Joe

0

+1到IAbstractDownvoteFactor - Z是最好的区。

您的日期时间看起来几乎像Iso8601,但具有自定义时区(初始信息http://en.wikipedia.org/wiki/ISO_8601#Time_zone_designators)。

使用时区非常困难,因为它们的规则可能会改变,有些可能会出现并消失。如果您可以影响传入格式 - 请求时区中的UTC(Z)或绝对偏移量(+08:00)。

否则,您需要找出您需要支持的时区,确定规则是否更改以及是否正确设置了夏令时区域(即适当使用PDT/PST时)。玩的开心。