私は文字列が "2009-10-08 08:22:02Z"で、これはISO 8601フォーマットです。.NETでDateTimeにISO 8601文字列を解析していますか?
DateTimeを使用してこの形式を解析するにはどうすればよいですか?
私は文字列が "2009-10-08 08:22:02Z"で、これはISO 8601フォーマットです。.NETでDateTimeにISO 8601文字列を解析していますか?
DateTimeを使用してこの形式を解析するにはどうすればよいですか?
いいえ、ISO 8601ではありません。Valid ISO 8601の表現には、時刻と日付の間にT
が含まれています。
DateTime
は、有効なISO 8601フォーマットをネイティブに処理できます。ただし、この特定の表現に固執している場合は、DateTime.ParseExact
を試して、フォーマット文字列を指定することができます。
string txt= "2009-10-08 08:22:02Z";
DateTime output = DateTime.ParseExact(txt, "u", System.Globalization.CultureInfo.InvariantCulture);
DateTimeクラスは、このフォーマット私は(Tセパレーター付き)ISO形式で考える
、 "S" の代わりに "U" を使用するためのuのstandard format stringをサポートしています。または、両方の形式をサポートするには、
string txt= "2009-10-08 08:22:02Z";
DateTime output = DateTime.ParseExact(txt, new string[] {"s", "u"}, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None);
を使用します。
ISO 8601では、タイムゾーンのオフセットを指定することもできます(たとえば、「2009-10-08T12:52:02 + 04:30」は上記と同じです)。しかし、答えのどれもこれを扱っていません... –