问题描述
我正在尝试将以下字符串转换为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);
这总是向我返回默认值,而不是返回转换后的字符串。
我不确定这是格式问题还是文化差异问题?
在此问题上将提供任何帮助!
解决方法
输入字符串和格式字符串之间有两处不匹配。
第一个不匹配是一个简单的错字。 .
和ss
之间缺少FFFFFF
格式字符串。结果是您有\F
的文字F
字符,而您的输入则没有。要解决此问题,请在.
和\
之间插入F
。
不过,您实际上并不需要转义该点,因为它不会被解释为任何特殊内容。它没有伤害,但也没有为您增加任何价值。您可以删除反斜杠。
第二个不匹配项是末尾的\s
。这样做是在输入的末尾尝试匹配原义的s
字符,您的输入也没有。从格式字符串的末尾删除\s
。
您要达到的目标尚不清楚。我最好的猜测是您想忽略尾随空格,因为它看起来像是空格字符的正则表达式模式。如果您要这样做,请传递DateTimeStyles.AllowTrailingWhite
而不是DateTimeStyles.None
。
应用这些更正后,格式字符串变为:
@"yyyyMMdd HH\:mm\:ss.FFFFFF zzz"