Дата превращается в число

Такой способ представления времени называют временем Unix: вместо хранения календарной записи вроде «вторник, 14:30» программа хранит число секунд, прошедших с выбранной начальной точки — полуночи 1 января 1970 года по всемирному времени. Эта условная начальная дата называется эпохой Unix.

Число удобно сравнивать и вычитать. Если один процесс записал отметку времени, а другой получил её позже, разность покажет, сколько секунд прошло. По тому же принципу можно назначать срок действия файла или отсчитывать задержку перед запуском действия.

Число — ещё не местное время

Чтобы показать отметку человеку, компьютер переводит её обратно в дату и часы. При этом учитывает часовой пояс: один и тот же момент будет отображаться по-разному в Москве и Токио. Поэтому часовой пояс обычно не меняет сам счётчик секунд — он меняет представление момента на экране.

Для дат до начала эпохи число отрицательное. Это не особый режим и не ошибка: достаточно продолжить ту же шкалу в обратную сторону. Например, отметка −60 означает момент за минуту до условного нуля.

У числа есть пределы

На старых системах отметку могли хранить в 32-битном знаковом целом — формате, которому отведено ограниченное число бит и один из них задаёт знак. Такой счётчик не вмещает сколь угодно большое значение: после предельного момента около января 2038 года он может переполниться и превратиться в отрицательное число. Это называют проблемой 2038 года.

Поэтому важно не только выбрать удобную точку отсчёта, но и предусмотреть достаточно места для счётчика. Сам календарь от этого не заканчивается — ограничение относится к формату, в котором конкретная программа хранит дату.