在c#中解析(几乎)RoundtripKind日期的问题
本文关键字:RoundtripKind 日期 问题 几乎 | 更新日期: 2023-09-27 18:05:54
我正在使用一个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"关键字不是问题(因为其他人已经成功地使用了它),而是我似乎不知道如何解析的"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);