2012-01-06 2 views
27

С помощью Leap Second on the horizon for June this year мне стало интересно узнать, является ли среда .Net каркасом второй секунды? Дополнительный второй должен быть вставлен после последней секунде 30 июня так UTC будет официально:. Методы DateTime .Net, способные распознать второй прыжок?

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

ли структура .Net способна обрабатывать это? Это даже имеет значение, если Windows is not Leap Second aware? Будет ли это влиять на приложения в моно на O/S, которые являются Leap Second?

EDIT:

Чтобы расширить это немного я представляя сценарий, в котором на основе Java решение на Linux (что Leap Second известно) вызывает веб-службы .Net переходящая в чем-то допустимая временная метка в Java, но выходит за рамки .Net. Существуют ли какие-либо рамки, которые обслуживают его (например, время Ноды)?

+3

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

ответ

19

Нет -

Один тик представляет собой одну сотню наносекунд или одну десятимиллионной доли секунды. В миллисекундах насчитывается 10 000 тиков.

Значение этого свойства представляет собой число 100-наносекундных интервалов, прошедших с 12:00 до полуночи, 1 января 0001 года, которое представляет DateTime.MinValue. Он не включает количество тиков, которые могут быть отнесены на скачки секунд.

Источник: http://msdn.microsoft.com/en-us/library/system.datetime.ticks.aspx

+4

, который перемещает вопрос о том, «что произойдет, когда системные часы будут откалиброваны при обновлении NTP * следующего»? –

+2

@ Ханс Пассант: Интересный вопрос. Что случилось с часами в последний раз, 31 декабря 2008 года? –

8

В .NET DateTime не имеет каких-либо положений для високосных секунд, но будет просто полагаться на время ОС. Windows блаженно не знает о Leap Seconds (1)(2), и поэтому просто будет иметь представление о времени, когда он получает его от своего ведущего устройства NTP (я считаю, что по умолчанию для не подключенного к домену устройства time.windows.com), который, вероятно, обслуживает UTC, включая секунды прыжка.

См. Также мой ответ на «Calculating Future Epoch Time in C#», который более подробно освещен.

  1. http://support.microsoft.com/kb/909614
  2. http://www.meinberg.de/english/info/leap-second.htm
Смежные вопросы