首页 > 解决方案 > 无法将字符串转换为 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);

这会一直返回我的默认值,而不是转换后的字符串。

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

将不胜感激在这个问题上的任何帮助!

标签: c#type-conversiondatetimeoffset

解决方案


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

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

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

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

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

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

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

推荐阅读