2011-10-12 35 views
12

Trong C#, làm cách nào để có được DateTime hiện tại theo định dạng sau? 2011-08-10T21: 36: 01.6327538ZC# - Định dạng thời gian hiện tại

+1

chỉ là một lưu ý, tôi không nghĩ rằng nó sẽ làm ký hiệu thời gian Zulu. nghĩa là nó sẽ không thêm "Z" và chuyển đổi thành UTC/GMT (tôi có thể sai, trong trường hợp này, hãy ngừng đọc). Nếu thời gian của bạn đã có trong UTC/GMT thì bạn chỉ có thể thêm "Z" sau. Ngoài ra, nếu bạn muốn có dấu thời gian chung nhưng không muốn chuyển đổi giờ địa phương, bạn có thể sử dụng phím "zzz" để in offset từ UTC, ký hiệu phổ biến được chấp nhận phổ biến. – gnomed

Trả lời

16
DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ") 

Hãy ghi nhớ rằng DateTime.Now là đôi khi chỉ chính xác đến một phần nghìn của một giây, tùy thuộc vào đồng hồ hệ thống. This page hiển thị như sau:

Có thể hiển thị các đơn vị phân số rất nhỏ trong một giây, chẳng hạn như mười phần nghìn giây hoặc một phần nghìn giây. Tuy nhiên, những giá trị này có thể không có ý nghĩa. Độ chính xác của các giá trị ngày tháng và thời gian phụ thuộc vào độ phân giải của đồng hồ hệ thống. Trên Windows NT 3.5 trở lên và hệ điều hành Windows Vista, độ phân giải của đồng hồ là khoảng 10-15 mili giây.

Tuy nhiên, nếu bạn tự điền số DateTime, bạn có thể làm cho chính xác hơn. Tôi không biết về bất kỳ thư viện tích hợp nào khác chính xác hơn DateTime.UtcNow.

Ngoài ra, DateTime.UtcNow.ToString("o") sẽ cung cấp cho bạn chuỗi ngày giờ thứ tự. Điều này không chỉ định múi giờ ở cuối, vì vậy bạn vẫn cần phải thêm Z vào cuối nếu bạn đang xử lý Utc

+0

Mặc dù tại sao Z tôi không chắc chắn .. –

+0

Mong muốn của anh ta một Z đặt vào cuối. –

+0

Oh xin lỗi đó là những gì tôi có nghĩa là - đó là lý do tại sao tôi đã cho bạn +1. Tôi không biết tại sao anh ta lại một Z. –

0

Hãy thử điều này:

var xs = DateIime.Now; 
    var frmtdDatetime = xs.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffff"); 

và kiểm tra này msdn link

0

Bạn có thể thử một trong hai:

DateTime.Now.ToString("o"); 

mà cũng bao gồm thành phần múi giờ. - HOẶC -

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffffff") 
2

Nếu bạn muốn thời gian của bạn bằng UTC (đó là ý nghĩa của Z) thì bạn cần phải đảm bảo rằng họ là UTC lần ...

tức

DateTime.UtcNow.ToString("O"); 

hoặc giả định rằng bạn biết rằng datetime của bạn là địa phương ...

DateTime foo = MethodThatReturnsALocalTime(); 
foo.ToUniversalTime().ToString("O"); 

FWIW: DateTime.Ut cNow nhanh hơn DateTime.Now vì nó không cần phải tra cứu múi giờ, trên Compact Framework mà sự khác biệt có thể rất đáng chú ý vì một số lý do.

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