【问题标题】:How do I parse ISO 8601 date without year using DateTimeOffset?如何使用 DateTimeOffset 解析没有年份的 ISO 8601 日期?
【发布时间】:2013-12-05 02:15:18
【问题描述】:

我需要解析不包含年份和可能月份组件的 ISO 8601 日期,例如:

--0412T102200Z 

我正在尝试使用以下代码,它会引发异常'输入中必须至少有一个带有年份的部分日期。':

DateTimeOffset.ParseExact("--0412T102200Z", "'--'MMdd'T'HHmmssZ",
           CultureInfo.InvariantCulture, DateTimeStyles.None);

如何解析此类日期?是否有机会避免在解析之前手动将“--”替换为年份?

【问题讨论】:

    标签: c# datetime-format iso8601 datetimeoffset datetime-parsing


    【解决方案1】:

    虽然在某些格式(如 XML XSD Schemas)中可能允许用年份代替破折号,但从技术上讲,这不是符合 ISO-8601 的值。

    问问自己这个值是什么意思意味着 - 它可能意味着“每年在UTC的这个月、日和时间”。换句话说,这是一种重复模式。

    .Net DateTimeDateTimeOffset 类型不能存储重复模式。它们用于表示特定的日期和时间。

    所以不幸的是,没有一年就无法解析这个。您首先需要确定要将模式应用到哪一年,将破折号手动替换为String.Replace,然后然后您可以解析它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      相关资源
      最近更新 更多