Усі статті

Unix-час: чому комп'ютери рахують час від 1970 року

Unix-час (Unix timestamp) — це кількість секунд, що минули з 1 січня 1970 року 00:00:00 UTC. Цю дату називають "епохою Unix" (Unix epoch), і саме від неї відлічують час практично всі сучасні операційні системи, бази даних і мови програмування.

Чому саме 1970 рік

Дата обрана не через якусь особливу подію, а через практичність: розробники Unix у Bell Labs на початку 1970-х просто взяли поточний на той момент рік як зручну круглу точку відліку. Жодного глибшого сенсу в цій даті немає.

Чому цей формат такий популярний

Зберігати час як одне ціле число значно простіше, ніж окремо рік, місяць, день, годину — арифметичні операції (порівняння дат, обчислення різниці) зводяться до простого віднімання чисел, без урахування високосних років чи різної кількості днів у місяцях.

Проблема 2038 року

Багато старих систем зберігають Unix-час як 32-бітне ціле число зі знаком, яке може представляти значення лише до 19 січня 2038 року. Після цієї дати таке число переповниться, що потенційно призведе до некоректної роботи систем — аналог "проблеми 2000 року", але для часу.

Навіщо це потрібно

  • Конвертувати timestamp з логів чи API-відповідей у зрозумілу дату й час.
  • Обчислювати різницю між двома моментами часу без ручних розрахунків календаря.
  • Діагностувати проблеми, пов'язані з часовими поясами при роботі з timestamp.

Unix-час і високосні секунди

Unix-час вважає, що кожна доба триває рівно 86400 секунд, ігноруючи високосні секунди (leap seconds), які час від часу додають до UTC для компенсації уповільнення обертання Землі. Це означає, що Unix-час технічно не є точним відображенням UTC у моменти додавання високосної секунди — більшість систем просто "розтягують" або повторюють одну секунду, щоб уникнути розриву в лічильнику.

Спробувати інструмент