【发布时间】:2016-09-05 13:52:17
【问题描述】:
我正在使用一个 Java 客户端,它返回一个像 2016-09-02T16:18:54.000 UTC 这样的日期。注意结尾,这不是标准格式。
如果我修剪“UTC”,我可以成功解析日期:
DateTime.Parse("2016-09-02T16:18:54.000")
但结果的 Kind 是未指定的,而不是 UTC(显然);我可以通过将“UTC”替换为“Z”来绕过它,如下所示:
DateTime.Parse("2016-09-02T16:18:54.000Z", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind)
但理想情况下,我不想弄乱输入。
使用 TryParseExact 和不同的格式尝试了几次,但都失败了:
DateTime.TryParseExact("2016-09-02T16:18:54.000 UTC", new [] {
"o",
"yyyy-MM-dd hh:mm:ss:fff UTC",
"yyyy-MM-ddhh:mm:ss:fff UTC",
"yyyy-MM-ddThh:mm:ss:fff UTC"
}, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out startDate)
我很确定“UTC”关键字不是问题(因为others 已成功使用它),而是我似乎不知道如何解析的“T”:甚至不是“我认为在我的第二个代码 sn-p 中隐式使用的 o" 格式似乎有效:
DateTime.TryParseExact("2016-09-02T16:18:54.000Z", "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out startDate)
【问题讨论】:
标签: c# date parsing datetime date-parsing