无法将字符串转换为 DateTimeOffset

Can't convert string to DateTimeOffset

我正在尝试将以下字符串转换为 DateTimeOffset

20201106 13:09:14.510952 +0000

我正在使用以下格式尝试转换它

DateTimeOffset dtofResult = new DateTimeOffset();

DateTimeOffset.TryParseExact("20201106 13:09:14.510952 +0000", @"yyyyMMdd HH\:mm\:ss\FFFFFF zzz\s", CultureInfo.InvariantCulture, DateTimeStyles.None, out dtofResult);

这总是返回默认值而不是转换后的字符串。

我不确定这是格式问题还是文化变体问题?

非常感谢对此问题的任何帮助!

您的输入字符串和格式字符串之间有两处不匹配。

第一个不匹配是一个简单的拼写错误。 ssFFFFFF 之间缺少格式字符串 .。结果是您有 \F 文字 F 字符,而您的输入没有。要解决此问题,请在 \F 之间插入 .

不过,您实际上并不需要对点进行转义,因为它不会被解释为任何特殊内容。它没有伤害,但也不会为您增加任何价值。您可以删除反斜杠。

第二个不匹配是末尾的 \s。这是在尝试匹配输入末尾的 s 字符,而您的输入也没有。从格式字符串的末尾删除 \s

你试图在那里实现的目标不清楚。我最好的猜测是您想忽略尾随空格,因为它看起来像空格字符的正则表达式模式。如果这是您想要的,请传递 DateTimeStyles.AllowTrailingWhite 而不是 DateTimeStyles.None.

应用这些更正后,格式字符串变为:

@"yyyyMMdd HH\:mm\:ss.FFFFFF zzz"