无法解析(几乎)C#中的RoundtripKind日期

时间:2016-09-05 13:52:17

标签: c# date parsing datetime date-parsing

我正在使用一个Java客户端,它返回一个像2016-09-02T16:18:54.000 UTC这样的日期。注意结尾,这不完全是标准格式。

如果我修剪“UTC”,我可以成功解析日期:

DateTime.Parse("2016-09-02T16:18:54.000")

但是结果的种类是未指定的,而不是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”,我似乎无法知道如何解析:甚至没有我认为在我的第二个代码片段中隐式使用的“o”格式似乎有效:

DateTime.TryParseExact("2016-09-02T16:18:54.000Z", "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out startDate)

1 个答案:

答案 0 :(得分:1)

如果您的输入类似于2016-09-02T16:18:54.000 UTC,这对我有用:

DateTime.TryParseExact("2016-09-02T16:18:54.000 UTC", 
"yyyy-MM-ddTHH:mm:ss.fff UTC"
, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out startDate);