C# UTC日期时间分析在时间上不匹配

C# UTC日期时间分析在时间上不匹配,c#,datetime,C#,Datetime,我正在尝试将此字符串Mon Aug 05 08:02:27+0000 2013转换为DateTime,但时间转换不正确。时间上有一些变化。这里有什么问题?我使用下面的代码 DateTime.ParseExact("Mon Aug 05 08:02:27 +0000 2013","ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture) 它返回的输出是 {05-08-2013 13:32:27} Date: {05-08-2013

我正在尝试将此字符串
Mon Aug 05 08:02:27+0000 2013
转换为
DateTime
,但时间转换不正确。时间上有一些变化。这里有什么问题?我使用下面的代码

DateTime.ParseExact("Mon Aug 05 08:02:27 +0000 2013","ddd MMM dd HH:mm:ss zzz yyyy", CultureInfo.InvariantCulture)
它返回的输出是

{05-08-2013 13:32:27}
Date: {05-08-2013 00:00:00}
Day: 5
DayOfWeek: Monday
DayOfYear: 217
Hour: 13
Kind: Local
Millisecond: 0
Minute: 32
Month: 8
Second: 27
Ticks: 635113063470000000
TimeOfDay: {13:32:27}
Year: 2013

ParseExact方法将DateTime返回为本地时间,并且您指定输入字符串为UTC。时间变换是由您所在的时区产生的。如果将生成的日期时间转换回UTC,则应获得与输入字符串完全相同的时间

要直接获取UTC时间,请使用此重载:


并将DateTimeStyles.AdjustToUniversal作为最后一个参数传递。

DateTime
非常混乱(坏了?)wrt。时区等等

您的快速解决方案可能是
datetimestyle.AdjustToUniversal
,即:

var d = DateTime.ParseExact("Mon Aug 05 08:02:27 +0000 2013",
  "ddd MMM dd HH:mm:ss zzz yyyy",
  CultureInfo.InvariantCulture,
  DateTimeStyles.AdjustToUniversal
  );
如果没有任何
datetimestyle
,默认情况下将返回一个“kind”
Local
DateTime
,正如您在引用的输出中看到的那样。由于您的输入字符串在
zzz
位置上显式地具有
+0000
,并且您的本地时间与计算机上的
+0000
不同,因此默认值是转换为您的时间

使用
datetimestyle.AdjustToUniversal
,返回值的“种类”是
Utc


对于一个可能不那么混乱的日期和时间接口,考虑.< /p>而获得值本身如何得到实际的UTC时间呢?有什么想法吗?谢谢你链接到野田佳彦时代-我不知道。