UTC日期时间解析时间不匹配

用户名

我正在尝试将此字符串转换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
杰普·斯蒂格·尼尔森(Jeppe Stig Nielsen)

DateTimewrt非常令人困惑(损坏?)。时区等。

一个快速的解决方案可能是DateTimeStyles.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
  );

如果没有任何值DateTimeStyles,则默认为返回aDateTime的“ kind” Local,如您在输出中所引用的那样。由于您的输入字符串明确+0000位于该zzz位置,并且您的本地时间与+0000计算机上的时间不同,因此默认值是转换为您的时间。

使用DateTimeStyles.AdjustToUniversal,返回值的“种类”为Utc

对于可能不太混乱的日期和时间界面,请考虑Noda Time

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章