将ISO 8601解析为C#DateTime

Dan*_*l M 11 c# datetime parsing iso iso8601

我得到了一堆DateTime-Strings,我想解析为ac#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
Run Code Online (Sandbox Code Playgroud)

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

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

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

Pan*_*vos 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");
Run Code Online (Sandbox Code Playgroud)

这两行都可以使用,结果日期将考虑偏移量.

这样做的原因是您提供的格式是标准日期时间格式之一,特别是通用可排序格式,而不是ISO 8601.

ISO 8601对应于往返格式,并使用'T'代替''来分隔日期和时间.