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时间呢?有什么想法吗?谢谢你链接到野田佳彦时代-我不知道。