我有一个像“2012.12.04T08:35:00”这样的字符串代表“W. Europe Standard Time”时区的时间。
现在,我想在UTC时间将其正确转换为c#DateTime对象。
这样做的正确方法是什么?
答案 0 :(得分: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
对给定值的时区进行 no 假设。 IT使用DateTimeKind
Unspecified
TimeZoneInfo.ConvertTimeToUtc
期望 Unspecified
日期时间,将其读取为好像位于明确指定的时区,并将其转换为到UTC。答案 1 :(得分:1)
答案 2 :(得分: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
答案 3 :(得分:-2)
您可以使用Convert.ToDateTime()。它应该工作。