可能重复:
C# 日期时间:不同时区的转换
我有一个像“2012.12.04T08:35:00”这样的字符串,它代表“西欧标准时间”时区的时间。
现在,我想以 UTC 时间将其正确转换为 ac# DateTime 对象。
这样做的正确方法是什么?
可能重复:
C# 日期时间:不同时区的转换
我有一个像“2012.12.04T08:35:00”这样的字符串,它代表“西欧标准时间”时区的时间。
现在,我想以 UTC 时间将其正确转换为 ac# DateTime 对象。
这样做的正确方法是什么?
在特定时区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
此处使用的对给定值的时区不做任何假设。IT 将其DateTimeKind
与Unspecified
.TimeZoneInfo.ConvertTimeToUtc
此处使用的需要一个Unspecified
日期时间,将其视为在明确指定的时区中读取,并将其转换为 UTC。从 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
您可以使用 Convert.ToDateTime()。它应该工作。