【发布时间】:2019-11-09 10:31:34
【问题描述】:
我正在尝试转换我从 API 获得的 DateTime string(UTC 格式)。最初的string 是
2019-06-24T13:24:39+1770
我尝试使用代码:
DateTime Dt;
DateTime.TryParseExact(
DtString,
new string[] {
"yyyy-MM-dd'T'HH:mm:sszzzz",
"yyyy-MM-dd HH:mm:ss",
"yyyy-MM-dd HH:mm",
"yyyy-MMM-dd",
"MM/dd/yyyy",
CultureInfo.CurrentCulture,
DateTimeStyles.AdjustToUniversal,
out Dt);
或者
DateTime.ParseExact(value, "yyyy-MM-dd'T'HH:mm:sszzzz", CultureInfo.InvariantCulture)
它给了我运行时错误
字符串未被识别为有效日期时间
【问题讨论】:
-
请问
2019-06-24T13:24:39+1770中的+1770是什么意思? -
@DmitryBychenko 我相信是时区
-
@Priya 不,不是。有效偏移量为
+01:00、-07:00或+05:30。1770应该是什么?分钟?在这种情况下,偏移量为 29.5 小时 -
在任何情况下,有事件的正确时间类型是DateTimeOffset,而不是
DateTime。 两者DateTime.Parse和DateTimeOffset.Parse甚至可以在没有格式说明符的情况下解析ISO8601 格式。DateTime.Parse("2019-06-27T15:12:24.3032748+03:00")正常工作,DateTimeOffset.Parse("2019-06-27T15:12:24.3032748+03:00")也是如此 -
@Priya 我必须同意 Panagiotis,DateTimeOffset 是必需的,偏移部分无效。根据 yo ISO 8601,如果所描述的时间比 UTC 早一小时,例如罗安达的时间,则区域指示符将是“+01:00”、“+0100”或简单的“+01”。但是,1770 是无效的,偏移范围从 -12 到 +14,因此该值必须不正确或其他。
标签: c# asp.net asp.net-mvc datetime utc