XMLファイルの日付/時刻に使用する正しい形式は何ですか


98

.NETを使用してXMLファイルに書き込むときに、日付/時刻にどの形式を使用しますか?単にDateTime.ToString()を使用するのですか、それとも特定の形式を使用する必要がありますか?

回答:


138

私はいつも使用ISO 8601形式(例えば2008-10-31T15:07:38.6875000-05:00) - date.ToString("o")。これもXSD日付形式です。これが推奨される形式であり、標準の日付と時刻の形式の文字列ですが、日付と時刻の間に「T」を付けたくない場合は、必要に応じて手動の形式の文字列を使用できます。date.ToString("yyyy-MM-dd HH:mm:ss");

編集:XSDまたはWebサービスから生成されたクラスを使用している場合は、DateTimeインスタンスを直接クラスプロパティに割り当てることができます。XMLテキストを記述している場合は、上記を使用してください。


44

編集:これは悪いアドバイスです。上記のように「o」を使用します。「s」は間違った動作をします

私はいつもこれを使います:

dateTime.ToUniversalTime().ToString("s");

スキーマが次のようになっている場合、これは正しいです。

<xs:element name="startdate" type="xs:dateTime"/>

結果は次のようになります:

<startdate>2002-05-30T09:00:00</startdate>

詳細については、http//www.w3schools.com/xml/schema_dtypes_date.aspをご覧ください。


10
これにより日付がUTCに変換されることに注意してください。日付を処理するときは、ロケールに基づいて現在のタイムゾーンに変換し直す必要があります(UTCですべてを処理している場合を除く)。また、通常は最後に「Z」を付けて、日付がUTCであることを示します。
ライアン

soap uiから.net Webサービスを呼び出すと、「s」が機能します。
Tristan Channing 2014年

4

手動でXML文字列をアセンブルする場合はvar.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ")); 、公式のXML日時形式を出力します。ただし、組み込みのシリアル化メソッドを使用する場合は、フォーマットについて心配する必要はありません。


jonniiは基本的に同じ結果を返します。
chilltemp 2008年

3
この場合、すべての日付はUTCタイムゾーンである必要があります。
Fr0sT 2013年

以前のコメントを繰り返します-dtがutcでない場合、これは実際には正しくありません。
Brady Moritz

3

DTDは何を言わなければなりませんか?

XMLファイルが他の既存のソフトウェア(SOAPなど)と通信するためのものである場合は、そのソフトウェアが期待することを確認してください。

XMLファイルがシリアル化用または存在しないソフトウェア(作成中のソフトウェアなど)との通信用である場合は、それを定義できます。その場合は、選択した言語で解析しやすく、人間が読みやすいものをお勧めします。たとえば、言語(VB.NETまたはC#.NETなど)でISO日付(YYYY-MM-DD)を簡単に解析できる場合は、それをお勧めします。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.