我需要解析不包含年份和月份部分的 ISO 8601 日期,例如:
--0412T102200Z
我正在尝试使用以下代码,该代码会引发异常“输入中必须至少存在包含年份的部分日期。”:
DateTimeOffset.ParseExact("--0412T102200Z", "'--'MMdd'T'HHmmssZ",
CultureInfo.InvariantCulture, DateTimeStyles.None);
如何解析此类日期?有机会避免在解析之前手动将“--”替换为年份吗?
最佳答案
虽然在某些格式中可能允许用年份替换破折号,例如 XML XSD Schemas ,从技术上讲,这不是符合 ISO-8601 标准的值。
问问自己这个值意味着什么 - 它可能意味着“每年在UTC的这个月、日和时间”。换句话说,这是一种重复模式。
.Net DateTime
和 DateTimeOffset
类型无法存储重复模式。它们用于表示特定的日期和时间。
不幸的是,没有一年就无法解析它。您首先需要确定要将模式应用到哪一年,用 String.Replace
手动替换破折号,然后然后您就可以解析它。
关于c# - 如何使用 DateTimeOffset 解析没有年份的 ISO 8601 日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20390133/