无法在 C# 中解析(几乎)RoundtripKind 日期
Trouble parsing (almost) RoundtripKind date in C#
我正在使用一个 Java 客户端,它 returns 我有一个像 2016-09-02T16:18:54.000 UTC
这样的约会对象。注意结尾,这不是完全标准的格式。
如果我trim "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)
如果您的输入类似于 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);
我正在使用一个 Java 客户端,它 returns 我有一个像 2016-09-02T16:18:54.000 UTC
这样的约会对象。注意结尾,这不是完全标准的格式。
如果我trim "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)
如果您的输入类似于 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);