无法将字符串转换为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);

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

我不确定这是格式问题还是文化差异问题?

在此问题上将提供任何帮助!

yys19024 回答:无法将字符串转换为DateTimeOffset

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

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

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

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

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

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

@"yyyyMMdd HH\:mm\:ss.FFFFFF zzz"
本文链接:https://www.f2er.com/1227877.html

大家都在问