将字符串中的时间转换为UTC时间?

时间:2012-12-04 09:10:38

标签: c# .net

  

可能重复:
  C# Datetimes: Conversion for different time zones

我有一个像“2012.12.04T08:35:00”这样的字符串代表“W. Europe Standard Time”时区的时间。

现在,我想在UTC时间将其正确转换为c#DateTime对象。

这样做的正确方法是什么?

4 个答案:

答案 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()。它应该工作。