如何使用DateTimeOffset解析没有年份的ISO 8601日期?

时间:2013-12-05 02:15:18

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

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

--0412T102200Z 

我正在尝试使用以下代码抛出异常'必须至少有一个部分日期,输入中存在一年。':

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

我如何解析这些日期?在解析之前有没有机会避免用一年手动替换' - '?

1 个答案:

答案 0 :(得分:3)

虽然可以在XML XSD Schemas等某些格式中替换年份替换短划线,但从技术上讲,这不符合ISO-8601标准。

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

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

所以不幸的是,没有一年就没有办法解析这个问题。您首先需要确定要将模式应用到哪一年,用String.Replace手动替换短划线,然后然后解析它。