2012-01-06 21 views
27

Với một số Leap Second on the horizon for June this year, tôi đã tự hỏi liệu khuôn khổ .Net có nhận thức được bước nhảy vọt thứ hai không? Số giây phụ sẽ được chèn sau giây cuối cùng của ngày 30 tháng 6 để UTC chính thức là:Phương thức DateTime của Net có khả năng nhận ra bước nhảy vọt thứ hai không?

2012 June 30,  23h 59m 59s 
2012 June 30,  23h 59m 60s 
2012 July 1,  0h 0m 0s 

Khuôn khổ .Net có khả năng xử lý việc này không? Liệu nó có quan trọng nếu Windows is not Leap Second aware? Điều này có ảnh hưởng đến các ứng dụng đơn lẻ đang chạy trên O/S là Nhận thức bước nhảy vọt thứ hai không?

EDIT:

Để mở rộng về vấn đề này một chút tôi đang hình dung một kịch bản mà một giải pháp Java dựa trên Linux (đó là Leap thứ hai biết) gọi một dịch vụ web trên nền .NET đi qua trong một cái gì đó một dấu thời gian hợp lệ trong Java nhưng nằm ngoài giới hạn cho .Net. Có khung nào phục vụ cho nó (Giống như Noda Time)?

+3

Xem http://stackoverflow.com/questions/781370/are-leapseconds-taken-in-account-in-dotnet-or-c – afrischke

Trả lời

19

Không -

Một đánh dấu đơn đại diện cho một trăm nano giây hoặc một trong mười phần triệu của một giây. Có 10.000 ve trong một phần nghìn giây.

Giá trị của thuộc tính này biểu thị số lượng khoảng thời gian 100 nano giây đã trôi qua kể từ 12:00:00 nửa đêm, ngày 1 tháng 1, 0001, đại diện cho DateTime.MinValue. Nó không bao gồm số lượng ve được quy cho giây nhảy vọt.

Nguồn: http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx

+4

nào di chuyển vấn đề "điều gì xảy ra khi đồng hồ hệ thống được hiệu chỉnh lại trên * cập nhật * NTP tiếp theo?" –

+2

@Hans Passant: Câu hỏi thú vị. Điều gì đã xảy ra với đồng hồ lần trước, vào ngày 31 tháng 12 năm 2008? –

8

Các Net DateTime không có quy định cho Giây Leap, nhưng chỉ đơn giản là sẽ dựa vào thời gian OS. Windows hoàn toàn không biết về Leap Seconds (1)(2) và do đó sẽ chỉ có khái niệm về thời gian khi nhận được nó từ chủ NTP của mình (tôi tin rằng mặc định cho máy không kết nối miền là time.windows.com). UTC bao gồm giây nhảy vọt.

Xem thêm câu trả lời của tôi cho "Calculating Future Epoch Time in C#" để biết thêm chi tiết.

  1. http://support.microsoft.com/kb/909614
  2. http://www.meinberg.de/english/info/leap-second.htm
Các vấn đề liên quan