【问题标题】:Can't convert string to DateTimeOffset无法将字符串转换为 DateTimeOffset
【发布时间】:2020-11-12 17:47:09
【问题描述】:

我正在尝试将以下字符串转换为 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-conversion datetimeoffset


    【解决方案1】:

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

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多