Протокол 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, изменяются в зависимости от того, используете ли вы для их хранения знаковые или беззнаковые переменные. Поэтому, когда вы разрабатываете и тестируете сетевые программы, использующие и передающие по сети числовую информацию, вы должны быть особенно осторожны в тех случаях, когда для представления ваших значений используются десятичные числа. (Поскольку использование десятичных чисел для визуальной оценки дат почти ничего не дает, рекомендуется всегда использовать двоичные или шестнадцатиричные значения.)