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 у моменти додавання високосної секунди — більшість систем просто "розтягують" або повторюють одну секунду, щоб уникнути розриву в лічильнику.