4

可能重复:
C# 日期时间:不同时区的转换

我有一个像“2012.12.04T08:35:00”这样的字符串,它代表“西欧标准时间”时区的时间。

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

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

4

4 回答 4

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此处使用的对给定值的时区不做任何假设。IT 将其DateTimeKindUnspecified.
  • TimeZoneInfo.ConvertTimeToUtc此处使用的需要一个Unspecified日期时间,将其视为在明确指定的时区中读取,并将其转换为 UTC。
于 2012-12-04T09:28:20.223 回答
1

您可以使用 DateTimeOffset.TryParse 方法。

http://msdn.microsoft.com/en-us/library/bb397029.aspx

看这里的帖子

使用偏移量将字符串转换为 DateTime

于 2012-12-04T11:55:49.803 回答
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

于 2012-12-04T09:28:07.910 回答
-2

您可以使用 Convert.ToDateTime()。它应该工作。

于 2012-12-04T10:23:53.727 回答