3.4.2. Декодирование значения времени

Протокол Time Protocol использует 32-битное число для представления текущего значения даты и времени. Это 32-битное число представляет время как число секунд, истекших с момента времени 00:00 (полночь) 1 января 1900 года. Другими словами, это значит, например, что значение 1, возвращенное протоколом Time Protocol, будет означать момент времени 12:00:01 1 января 1900 года. В табл. 3.4 приведены числа, использованные в качестве примеров в спецификации Time Protocol (в RFC 868).

Таблица 3.4

Примеры 32-битных чисел из спецификации протокола Time Protocol

Без знака

Со знаком

Шестнадцатиричное

Дата (полночь по Гринвичу)

2208988800

-2085978496

Ох83АА7Е80

1 января 1970 GMT

2398291200

-1896676096

Ox8EF30500

1 января 1976 GMT

2524521600

-1770445696

0x96792480

1 января 1980 GMT

2629584000

-1665383296

Ох9СВС4480

1 мая 1983 GMT

2997239296

-1297728000

ОхВ2А63ЕОО

17 ноября 1858 GMT

Как видно из табл. 3.4, десятичные значения, используемые протоколом Time Protocol, изменяются в зависимости от того, используете ли вы для их хранения знаковые или беззнаковые переменные. Поэтому, когда вы разрабатываете и тестируете сетевые программы, использующие и передающие по сети числовую информацию, вы должны быть особенно осторожны в тех случаях, когда для представления ваших значений используются десятичные числа. (Поскольку использование десятичных чисел для визуальной оценки дат почти ничего не дает, рекомендуется всегда использовать двоичные или шестнадцатиричные значения.)