2008-10-31 24 views

Trả lời

119

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à XSD date format. Đó là định dạng ưa thích và Standard Date and Time Format string, 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 'T' giữa ngày và giờ: date.ToString("yyyy-MM-dd HH:mm:ss");

EDIT: Nếu bạn đang sử dụng lớp được tạo một XSD hoặc Web Service, bạn chỉ có thể gán 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 ở trên.

3

DTD phải nói gì?

Nếu tệp XML dành cho giao tiếp với phần mềm hiện có khác (ví dụ: SOAP), sau đó kiểm tra phần mềm đó cho phần mềm mong muốn.

Nếu tệp XML là để tuần tự hóa hoặc liên lạc 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 đề nghị một cái gì đó dễ dàng để phân tích trong ngôn ngữ của bạn (s) của sự lựa chọn, và dễ dàng để đọc cho con người. ví dụ: nếu ngôn ngữ của bạn (cho dù VB.NET hoặc C# .NET hay bất kỳ thứ gì) cho phép bạn phân tích cú pháp các ngày ISO (YYYY-MM-DD) một cách dễ dàng, đó là điều tôi muốn đề xuất.

38

EDIT: Đây là lời khuyên không tốt. Sử dụng "o", như trên. "s" thực hiện điều sai.

tôi luôn luôn sử dụng này:

dateTime.ToUniversalTime().ToString("s"); 

này là đúng nếu schema của bạn trông như thế này:

<xs:element name="startdate" type="xs:dateTime"/> 

nào sẽ cho kết quả:

<startdate>2002-05-30T09:00:00</startdate> 

Bạn có thể tìm thêm thông tin tại đây: http://www.w3schools.com/xml/schema_dtypes_date.asp

+8

Hãy nhớ điều này 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 bạn dựa trên ngôn ngữ (trừ khi bạn đang xử lý mọi thứ trong UTC). Ngoài ra, thông thường bạn sẽ đặt 'Z' ở cuối để biểu thị ngày tháng là UTC. – Ryan

+0

"s" hoạt động cho tôi khi gọi một dịch vụ web .net từ ui xà phòng. –

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 thức tuần tự tích hợp sẵn.

+0

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

+3

Trong trường hợp này, tất cả các ngày phải nằm trong múi giờ UTC nếu không thì việc sử dụng hậu tố "Z" là sai. – Fr0sT

+0

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. –

Các vấn đề liên quan