我需要解析不包含一年且可能是月份组件的ISO 8601日期,例如:
--0412T102200Z
我正在尝试使用以下代码抛出异常'必须至少有一个部分日期,输入中存在一年。':
DateTimeOffset.ParseExact("--0412T102200Z", "'--'MMdd'T'HHmmssZ",
CultureInfo.InvariantCulture, DateTimeStyles.None);
我如何解析这些日期?在解析之前有没有机会避免用一年手动替换' - '?
答案 0 :(得分:3)
虽然可以在XML XSD Schemas等某些格式中替换年份替换短划线,但从技术上讲,这不符合ISO-8601标准。
问问自己这个值意味着什么 - 它可能意味着“每年在本月,日和UTC时间”。换句话说,这是一种复发模式。
.Net DateTime
和DateTimeOffset
类型无法存储重复发生模式。它们用于表示特定的日期和时间。
所以不幸的是,没有一年就没有办法解析这个问题。您首先需要确定要将模式应用到哪一年,用String.Replace
手动替换短划线,然后然后解析它。