Windows дата репрезентация

620
Erick

Я обсуждал ошибку 2038 на Unix с другом (ошибка с 32-битной меткой времени ).

Нам действительно было интересно, как окна хранят сами даты? Я думал, что это простой DateTime, но как тогда система сможет рассчитать дельту между двумя датами?

Возможно ли, что окна хранят даты (внутренне) во временной метке, а затем преобразуют ее в DateTime?

0

1 ответ на вопрос

4
geoffc

Существует FILETIME, 64-битное целое число со знаком, представляющее 100 наносекундных интервалов с 1 января 1601 года. Это длится смехотворно долго, поскольку 64-битное число - это огромное количество.

Принимая во внимание, что CTIME (Unixtime) является 32-разрядным целым числом со знаком, представляющим секунды с 1 января 1970 года.

Лучший вопрос: «ГДЕ» Windows использует каждый формат? Каждая вещь, которая хранит время, потенциально может использовать любое представление времени, которое они хотят.

Использует ли AD то же самое, что и система, как файловую систему и т. Д.? Заинтересоваться ответом на этот вопрос!

Насколько я знаю, по крайней мере .NET Framework забирает время из файлового времени. Fredrik Mörk 14 лет назад 0
Так что он также хранится как 1234567890, если я правильно понимаю? Erick 14 лет назад 0
@Erick: это выглядит как CTIME, а не FILETIME. FILETIME в безумные числа. Прямо сейчас: 1247703464 в CTIME и FILETIME для прямо сейчас: 1289217709140600000 geoffc 14 лет назад 0
В Windows есть как минимум два или три разных способа хранения времени. FILETIME - это тот, который используют люди NTFS, затем есть OLEDateTime, который представляет собой «двойную», где неотъемлемая часть - это день, а дробная часть - время дня и где-то еще (не помню сейчас имя) человека. -читаемая строка символов, сохранение даты, времени и часового пояса. Joey 14 лет назад 0