รูปแบบที่ถูกต้องที่จะใช้สำหรับวันที่ / เวลาในไฟล์ XML คืออะไร


98

ฉันใช้รูปแบบใดสำหรับวันที่ / เวลาเมื่อเขียนไปยังไฟล์ XML โดยใช้. NET ฉันเพียงแค่ใช้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 Service คุณสามารถกำหนดอินสแตนซ์ 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
Ryan

"s" ใช้ได้ผลกับฉันเมื่อเรียกใช้บริการเว็บ. net จาก soap ui
Tristan Channing

4

หากคุณกำลังประกอบสตริง XML ด้วยตนเองให้ใช้var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ")); ซึ่งจะส่งออกรูปแบบ XML Date Time อย่างเป็นทางการ แต่คุณไม่ต้องกังวลเกี่ยวกับรูปแบบหากคุณใช้วิธีการทำให้เป็นอนุกรมในตัว


jonnii's จะคืนผลลัพธ์แบบเดิม
chilltemp

3
ในกรณีนี้วันที่ทั้งหมดต้องอยู่ในเขตเวลา UTC มิฉะนั้นการใช้คำต่อท้าย "Z" จะไม่ถูกต้อง
Fr0sT

ฉันจะพูดซ้ำความคิดเห็นก่อนหน้านี้ - นี่ไม่ถูกต้องจริง ๆ ถ้า dt ไม่ใช่ utc
Brady Moritz

3

DTD ต้องพูดอะไร?

หากไฟล์ XML ใช้สำหรับสื่อสารกับซอฟต์แวร์อื่น ๆ ที่มีอยู่ (เช่น SOAP) ให้ตรวจสอบซอฟต์แวร์นั้นว่าต้องการอะไร

หากไฟล์ XML ใช้สำหรับการทำให้เป็นอนุกรมหรือการสื่อสารกับซอฟต์แวร์ที่ไม่มีอยู่ (เช่นไฟล์ที่คุณกำลังเขียน) คุณสามารถกำหนดได้ ในกรณีนี้ฉันขอแนะนำสิ่งที่ง่ายต่อการแยกวิเคราะห์ในภาษาที่คุณเลือกและอ่านง่ายสำหรับมนุษย์ เช่นถ้าภาษาของคุณ (ไม่ว่าจะเป็น VB.NET หรือ C # .NET หรืออะไรก็ตาม) อนุญาตให้คุณแยกวิเคราะห์วันที่ ISO (YYYY-MM-DD) ได้อย่างง่ายดายนั่นคือสิ่งที่ฉันแนะนำ


0

XmlConvertระดับให้เหล่านี้ชนิดของสิ่งอำนวยความสะดวก เกี่ยวกับ DateTimes โดยเฉพาะอย่างยิ่งควรระมัดระวังเกี่ยวกับวิธีการที่ล้าสมัย ดูเพิ่มเติม: https://stackoverflow.com/a/7457718/1288109

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.