web-dev-qa-db-ja.com

ISO 8601をC#DateTimeに解析します

解析したい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を取得しています。

11
Daniel M

特別なことをする必要はありません。単純な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");

両方の行が機能し、結果の日付はオフセットを考慮に入れます。

これが機能する理由は、指定した形式が標準の日時形式の1つであるためです。具体的には、ISO 8601ではなく ユニバーサルソート可能形式 です。

ISO 8601は roundtrip 形式に対応し、日付と時刻を区切るために ''の代わりに 'T'を使用します。

19