ฉันใช้รูปแบบใดสำหรับวันที่ / เวลาเมื่อเขียนไปยังไฟล์ XML โดยใช้. NET ฉันเพียงแค่ใช้DateTime.ToString()
หรือฉันต้องใช้รูปแบบเฉพาะ?
ฉันใช้รูปแบบใดสำหรับวันที่ / เวลาเมื่อเขียนไปยังไฟล์ XML โดยใช้. NET ฉันเพียงแค่ใช้DateTime.ToString()
หรือฉันต้องใช้รูปแบบเฉพาะ?
คำตอบ:
ฉันมักจะใช้มาตรฐาน 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 ให้ใช้ข้างต้น
แก้ไข: นี่เป็นคำแนะนำที่ไม่ดี ใช้ "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
หากคุณกำลังประกอบสตริง XML ด้วยตนเองให้ใช้var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ"));
ซึ่งจะส่งออกรูปแบบ XML Date Time อย่างเป็นทางการ แต่คุณไม่ต้องกังวลเกี่ยวกับรูปแบบหากคุณใช้วิธีการทำให้เป็นอนุกรมในตัว
DTD ต้องพูดอะไร?
หากไฟล์ XML ใช้สำหรับสื่อสารกับซอฟต์แวร์อื่น ๆ ที่มีอยู่ (เช่น SOAP) ให้ตรวจสอบซอฟต์แวร์นั้นว่าต้องการอะไร
หากไฟล์ XML ใช้สำหรับการทำให้เป็นอนุกรมหรือการสื่อสารกับซอฟต์แวร์ที่ไม่มีอยู่ (เช่นไฟล์ที่คุณกำลังเขียน) คุณสามารถกำหนดได้ ในกรณีนี้ฉันขอแนะนำสิ่งที่ง่ายต่อการแยกวิเคราะห์ในภาษาที่คุณเลือกและอ่านง่ายสำหรับมนุษย์ เช่นถ้าภาษาของคุณ (ไม่ว่าจะเป็น VB.NET หรือ C # .NET หรืออะไรก็ตาม) อนุญาตให้คุณแยกวิเคราะห์วันที่ ISO (YYYY-MM-DD) ได้อย่างง่ายดายนั่นคือสิ่งที่ฉันแนะนำ
XmlConvert
ระดับให้เหล่านี้ชนิดของสิ่งอำนวยความสะดวก เกี่ยวกับ DateTimes โดยเฉพาะอย่างยิ่งควรระมัดระวังเกี่ยวกับวิธีการที่ล้าสมัย ดูเพิ่มเติม: https://stackoverflow.com/a/7457718/1288109