Định dạng chính xác để sử dụng cho Ngày / Giờ trong tệp XML là gì


98

Tôi sử dụng định dạng nào cho Ngày / Giờ khi ghi vào tệp XML bằng .NET? Tôi chỉ sử dụng DateTime.ToString()hay tôi phải sử dụng một định dạng cụ thể?

Câu trả lời:


138

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.


44

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


10
Hãy nhớ rằng điều này sẽ chuyển đổi ngày thành UTC. Khi bạn xử lý ngày, bạn phải chuyển đổi nó trở lại múi giờ hiện tại của mình dựa trên ngôn ngữ (trừ khi bạn đang xử lý mọi thứ bằng UTC). Ngoài ra, thông thường bạn sẽ đặt chữ 'Z' ở cuối để biểu thị ngày là UTC.
Ryan

"s" phù hợp với tôi khi gọi một dịch vụ web .net từ soap ui.
Tristan Channing

4

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.


jonnii's về cơ bản sẽ trả về cùng một kết quả.
chilltemp 31/10/08

3
Trong trường hợp này, tất cả các ngày PHẢI theo múi giờ UTC nếu không việc sử dụng hậu tố "Z" là sai.
Fr0sT

Tôi sẽ lặp lại nhận xét trước - điều này thực sự không chính xác nếu dt không phải là utc.
Brady Moritz

3

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.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.