Unix-метки времени

Понимание эпохального времени

Узнать о метках времени

Unix-метка времени вида «1704067200» означает 1 января 2024 года в полночь по UTC. Это простое число — количество секунд с 1 января 1970 года — является универсальным способом представления времени в компьютерах. Понимание Unix-меток времени необходимо для программирования, работы с базами данных и API.

Почему 1970 год?

Операционная система Unix была разработана в конце 1960-х годов в Bell Labs. Когда разработчикам понадобилась произвольная точка отсчёта для хронометража:

  • 1 января 1970 года было выбрано как круглая дата, близкая к моменту создания системы
  • Это позволяло 32-битным целым числам охватывать даты далеко в будущем
  • Начало с полуночи UTC обеспечивало простоту и универсальность

Эта «эпоха» стала фактическим стандартом в вычислительной технике.

Конвертация меток времени

Из метки времени в дату

Метка времениДата (UTC)
01 января 1970 г. 00:00:00
864002 января 1970 г. 00:00:00
10000000009 сентября 2001 г. 01:46:40
123456789013 февраля 2009 г. 23:31:30
17040672001 января 2024 г. 00:00:00
200000000018 мая 2033 г. 03:33:20
214748364719 января 2038 г. 03:14:07 (предел 32-бит)

Полезные временные интервалы

ПериодСекунды
1 минута60
1 час3 600
1 день86 400
1 неделя604 800
1 год (прибл.)31 536 000

Метки времени в миллисекундах

Многие системы используют миллисекунды вместо секунд:

ФорматПример (один и тот же момент)Используется в
Секунды1704067200Unix, PHP, Python
Миллисекунды1704067200000JavaScript, Java, JSON API
Микросекунды1704067200000000Некоторые базы данных
Наносекунды1704067200000000000Go, некоторые системы

Для конвертации: миллисекунды ÷ 1000 = секунды

Работа с метками времени в коде

JavaScript

// Текущая метка времени (миллисекунды)
Date.now(); // 1704067200000

// Метка времени в дату
new Date(1704067200 * 1000);

// Дата в метку времени
Math.floor(new Date('2024-01-01').getTime() / 1000);

Python

import time, datetime

# Текущая метка времени
time.time()  # 1704067200.0

# Метка времени в datetime
datetime.datetime.fromtimestamp(1704067200)

# datetime в метку времени
datetime.datetime(2024, 1, 1).timestamp()

SQL

-- MySQL: Текущая метка времени
SELECT UNIX_TIMESTAMP();

-- Метка времени в дату
SELECT FROM_UNIXTIME(1704067200);

-- Дата в метку времени
SELECT UNIX_TIMESTAMP('2024-01-01');

Преимущества Unix-меток времени

  • Независимость от часовых поясов: всегда UTC, без проблем с летним временем
  • Простая арифметика: прибавление/вычитание секунд для расчётов
  • Компактное хранение: одно целое число вместо форматированной строки
  • Сортировка: числовая сортировка равна хронологической
  • Универсальность: работает во всех языках программирования и системах

Когда использовать метки времени, а когда форматированные даты

  • Метки времени: хранение, вычисления, API, базы данных
  • Форматированные даты: отображение пользователю, отчёты, журналы

Заключение

Unix-метки времени подсчитывают секунды с 1 января 1970 года UTC. Эта простая система обеспечивает универсальное представление времени на компьютерах и в языках программирования. Помните, что некоторые системы используют миллисекунды (13 цифр) вместо секунд (10 цифр), а 32-битные системы столкнутся с ограничением в 2038 году. Для хранения и вычислений метки времени идеальны; для отображения конвертируйте их в удобочитаемые форматы.

Похожие статьи

Unix-метки времени: эпохальное время для разработчиков | YounitConverter