将ISO 8601解析为C#DateTime

时间:2013-10-17 07:44:32

标签: c# parsing datetime iso iso8601

我有一堆DateTime-Strings,我想解析成一个c#DateTime。

2009-06-18 02:10:31.296761+00
2009-06-18 02:13:34.049145+00
2009-01-06 23:52:21.510121+00
2009-06-18 02:17:57.268252+00
2010-01-22 03:31:26.512496+00
2009-06-18 01:32:37.930961+00

我目前正在尝试使用以下代码行获取DateTime-Object:

DateTime.ParseExact(str, "yyyy-MM-dd HH:mm:ss.FFFK", CultureInfo.InvariantCulture, DateTimeStyles.None);

但我总是得到一个System.FormatException。

1 个答案:

答案 0 :(得分:19)

你不需要做任何花哨的事情,简单的DateTime.Parse有效:

DateTime myDate1 = DateTime.Parse("2009-06-18 02:10:31.296761+00");
DateTime myDate2 = DateTime.Parse("2009-06-18 02:10:31.296761+03");

这两行都可以使用,结果日期会考虑到偏移量。

这样做的原因是您提供的格式是标准日期时间格式之一,特别是the universal sortable format,而不是ISO 8601.

ISO 8601对应roundtrip格式,并使用'T'代替''来区分日期。