2011-08-09 26 views
15

thể trùng lặp:
datetime to string with time zoneLàm thế nào để có được DateTime.Now() trong YYYY-MM-DDThh: mm: Định dạng ssTZD sử dụng C#

Đây là một trong những ngày chuẩn W3C định dạng thời gian mà tôi muốn sử dụng trong sơ đồ trang web. tiêu chuẩn DateTime này là:

Ngày đầy đủ cộng với giờ, phút và giây: YYYY-MM-DDThh: mm: ssTZD nơi TZD = vấn thiết kế múi giờ (Z hoặc + hh: mm hoặc -hh: mm) (ví dụ 1997-07-16T19: 20: 30 + 01: 00)

tôi đang sử dụng đoạn mã sau để có được DateTime hiện ở định dạng đó:

DateTime.Now.ToString("yyyy-MM-ddThh:mm:ssTZD"); 

Nhưng điều này mang lại: 2011-08 -10T02: 27: 20TZD

Rõ ràng DateTime.Now không nhận ra "TZD" trong tham số. Hãy giúp tôi. Làm cách nào để có được DateTime hiện tại ở định dạng này?

+0

'DateTime.Now' không bao giờ thậm chí nhìn thấy thông số đó. Đó là một tham số cho phương thức 'ToString'. – CodesInChaos

Trả lời

34

Sử dụng định dạng số zzz để nhận chênh lệch múi giờ theo giờ và phút. Bạn cũng muốn sử dụng định dạng số HH để có được giờ theo định dạng 24 giờ.

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:sszzz") 

Kết quả:

2011-08-09T23:49:58+02:00 

Một số thiết lập văn hóa sử dụng trong thời gian thay vì dấu hai chấm cho thời gian, vì vậy bạn có thể muốn sử dụng dấu hai chấm đen thay vì tách thời gian:

DateTime.Now.ToString("yyyy-MM-ddTHH':'mm':'sszzz") 

Custom Date and Time Format Strings

+0

làm thế nào là nó có thể bạn đã có mod 24h và tôi 12h chế độ? – genesis

+0

Cộng với một để đề cập đến dấu hai chấm màu; mọi người có xu hướng quên rằng ':' đại diện cho dấu phân cách thời gian của nhà cung cấp định dạng hiện tại. –

+1

Truyền 'CultureInfo.InvariantCulture' là một cách để đảm bảo rằng': 'không được dịch. Ngoài ra nó đảm bảo lịch Gregorian được sử dụng - vì nó cũng có thể lịch của văn hóa hiện tại là cái gì khác. –

3

Hãy thử cách này:

DateTime.Now.ToString("yyyy-MM-ddThh:mm:sszzz"); 

zzz là múi giờ bù.

+0

có cách nào để thêm mili giây không? –

+0

Oh yeah! Tôi tìm thấy nó ..: fff - là phần nhỏ của giây. 'code' DateTime.Now.ToString (" yyyy-MM-ddThh: mm: ss: fffzzz "); –

9

sử dụng zzz thay vì TZD

Ví dụ:

DateTime.Now.ToString("yyyy-MM-ddThh:mm:sszzz"); 

đáp ứng:

2011-08-09T11:50:00:02+02:00 
Các vấn đề liên quan