2008-10-31 77 views

回答

119

我總是使用ISO 8601格式(例如2008-10-31T15:07:38.6875000-05:00) - date.ToString("o")。它也是XSD date format。這是首選的格式和Standard Date and Time Format string,但如有必要,可以使用手動格式字符串,如果你不想要的日期和時間之間的「T」:date.ToString("yyyy-MM-dd HH:mm:ss");

編輯:如果您使用的是從生成的類一個XSD或Web服務,您可以直接將DateTime實例分配給類屬性。如果您正在編寫XML文本,請使用上述內容。

3

DTD有什麼要說的?

如果XML文件用於與其他現有軟件(例如SOAP)通信,請檢查該軟件是否符合要求。

如果XML文件用於序列化或與不存在的軟件(例如,您正在編寫的軟件)進行通信,則可以對其進行定義。在這種情況下,我會建議一些易於解析的選擇語言,並易於閱讀。例如,如果您的語言(無論是VB.NET還是C#.NET或其他)可以輕鬆解析ISO日期(YYYY-MM-DD),那就是我所建議的。

38

編輯:這是不好的建議。如上所述使用「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

+8

請記住,這會將日期轉換爲UTC。處理日期時,必須根據區域設置將其轉換回當前時區(除非您正在處理UTC中的所有內容)。另外,通常您會在末尾放置'Z'來表示日期是UTC。 – Ryan 2008-10-31 20:32:11

+0

「s」在從soap ui調用.net Web服務時適用於我。 – 2014-05-15 11:42:33

4

如果您正在手動組裝XML字符串,請使用var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ"));這將輸出官方的XML Date Time格式。但是如果使用內置的序列化方法,則不必擔心格式。