我正在使用一个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)
答案 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);