Câu trả lời:
Tôi luôn sử dụng định dạng ISO 8601 (ví dụ 2008-10-31T15:07:38.6875000-05:00
) - date.ToString("o")
. Nó cũng là định dạng ngày tháng XSD . Đó là định dạng ưa thích và chuỗi Định dạng Ngày và Giờ Chuẩn , mặc dù bạn có thể sử dụng chuỗi định dạng thủ công nếu cần nếu bạn không muốn có chữ 'T' giữa ngày và giờ:date.ToString("yyyy-MM-dd HH:mm:ss");
CHỈNH SỬA: Nếu bạn đang sử dụng một lớp được tạo từ XSD hoặc Dịch vụ Web, bạn có thể chỉ định trực tiếp cá thể DateTime cho thuộc tính lớp. Nếu bạn đang viết văn bản XML, thì hãy sử dụng cách trên.
CHỈNH SỬA: Đây là lời khuyên tồi. Sử dụng "o", như trên. "s" làm điều sai .
Tôi luôn sử dụng cái này:
dateTime.ToUniversalTime().ToString("s");
Điều này đúng nếu giản đồ của bạn trông giống như sau:
<xs:element name="startdate" type="xs:dateTime"/>
Điều này sẽ dẫn đến:
<startdate>2002-05-30T09:00:00</startdate>
Bạn có thể tham khảo thêm thông tin tại đây: http://www.w3schools.com/xml/schema_dtypes_date.asp
Nếu bạn đang lắp ráp thủ công chuỗi XML, hãy sử dụng var.ToUniversalTime().ToString("yyyy-MM-dd'T'HH:mm:ss.fffffffZ"));
Điều đó sẽ xuất ra định dạng Ngày giờ XML chính thức. Nhưng bạn không phải lo lắng về định dạng nếu bạn sử dụng các phương pháp tuần tự hóa có sẵn.
DTD có gì để nói?
Nếu tệp XML dùng để giao tiếp với phần mềm hiện có khác (ví dụ: SOAP), thì hãy kiểm tra xem phần mềm đó có mong đợi gì không.
Nếu tệp XML là để tuần tự hóa hoặc giao tiếp với phần mềm không tồn tại (ví dụ: phần mềm bạn đang viết), bạn có thể xác định nó. Trong trường hợp đó, tôi muốn đề xuất một thứ gì đó vừa dễ phân tích bằng (các) ngôn ngữ bạn chọn, vừa dễ đọc đối với con người. ví dụ: nếu ngôn ngữ của bạn (dù là VB.NET hay C # .NET hoặc bất cứ thứ gì) cho phép bạn phân tích cú pháp ngày ISO (YYYY-MM-DD) một cách dễ dàng, thì đó là cách tôi đề xuất.
Các XmlConvert
lớp học cung cấp các loại phương tiện. Về DateTimes, đặc biệt, hãy cẩn thận với các phương pháp lỗi thời. Xem thêm: https://stackoverflow.com/a/7457718/1288109