Как преобразовать Unix-метки времени в удобочитаемые даты
Зачем преобразовывать Unix-метки времени?
Unix-метки времени идеально подходят для машин — одно целое число компактно, однозначно и легко сортируется. Но для человека 1785292800 ничего не значит, пока не будет преобразовано в календарную дату и время. Независимо от того, отлаживаете ли вы файл журнала, анализируете ли записи базы данных или читаете ответ API, умение быстро преобразовывать метки времени — это важный навык.
Способ 1: Использование нашего онлайн-конвертера Unix-меток времени
Самый быстрый и надёжный способ — использовать специализированный инструмент преобразования.
Наш Конвертер Unix-меток времени принимает метки времени как в секундах, так и в миллисекундах, автоматически определяет разрешение и отображает результат одновременно в нескольких часовых поясах. Вы также можете пойти в обратном направлении — ввести удобочитаемую дату и получить соответствующую Unix-метку времени.
Этот подход идеален, когда вам нужно быстрое разовое преобразование без использования командной строки.
Способ 2: Использование командной строки Linux (команда date)
Если у вас есть доступ к терминалу Linux или macOS, команда date — ваш лучший друг.
Преобразование метки времени в удобочитаемую дату
# На GNU Linux (большинство дистрибутивов)
date -d @1785292800
# Указать собственный формат
date -d @1785292800 +"%Y-%m-%d %H:%M:%S"
# Output: 2026-07-19 00:00:00
# С учётом часового пояса
TZ="America/New_York" date -d @1785292800
# Output: Sun Jul 19 00:00:00 EDT 2026
На macOS (BSD date) синтаксис немного отличается:
# На macOS
date -r 1785292800
# С собственным форматом
date -r 1785292800 +"%Y-%m-%d %H:%M:%S"
Преобразование даты в Unix-метку времени
# На GNU Linux
date -d "2026-07-19 00:00:00" +%s
# На macOS
date -j -f "%Y-%m-%d %H:%M:%S" "2026-07-19 00:00:00" +%s
Способ 3: Ручное вычисление
Хотя вам редко понадобится делать это вручную, понимание математики помогает понять, как работает система.
Формула
seconds = (year - 1970) × 31536000 + (month offset) × 86400 + day × 86400 + hours × 3600 + minutes × 60 + seconds
Самая сложная часть — учёт високосных лет. Год является високосным, если он делится на 4, за исключением вековых лет, не делящихся на 400.
Быстрые приблизительные оценки
- 86 400 секунд = 1 день
- 604 800 секунд = 1 неделя
- Примерно 31 536 000 секунд = 1 обычный год
- Примерно 31 622 400 секунд = 1 високосный год
Для грубой оценки можно вычислить timestamp / 86400, чтобы получить количество дней с начала эпохи, а затем прибавить эти дни к 1 января 1970 года.
Способ 4: Использование языков программирования
Каждый основной язык программирования имеет встроенные функции для преобразования меток времени. Вот наиболее распространённые из них:
JavaScript (браузер или Node.js)
// Timestamp to date (JavaScript uses milliseconds)
const timestamp = 1785292800;
const date = new Date(timestamp * 1000);
console.log(date.toISOString());
// Output: 2026-07-19T00:00:00.000Z
// Date to timestamp
const ts = Math.floor(new Date("2026-07-19").getTime() / 1000);
console.log(ts);
// Output: 1785292800
Python
from datetime import datetime
# Timestamp to date
dt = datetime.utcfromtimestamp(1785292800)
print(dt.isoformat())
# Output: 2026-07-19T00:00:00
# Timezone-aware (Python 3.9+)
from zoneinfo import ZoneInfo
dt_tz = datetime.fromtimestamp(1785292800, tz=ZoneInfo("America/New_York"))
print(dt_tz.isoformat())
# Output: 2026-07-19T00:00:00-04:00
# Date to timestamp
import time
ts = time.mktime(datetime(2026, 7, 19).timetuple())
print(ts)
PHP
<?php
// Timestamp to date
echo date("Y-m-d H:i:s", 1785292800);
// Output: 2026-07-19 00:00:00
// Date to timestamp
echo strtotime("2026-07-19 00:00:00");
// Output: 1785292800
Способ 5: Использование табличных процессоров
Google Sheets
Используйте формулу =DATE(1970,1,1) + A1 / 86400, где A1 содержит метку времени. Отформатируйте ячейку с результатом как дату.
Microsoft Excel
=DATE(1970,1,1) + A1 / 86400
В Windows Excel может потребоваться:
=(A1 / 86400) + DATE(1970,1,1)
Пограничные случаи, на которые стоит обратить внимание
Секунды и миллисекунды
Это самая распространённая ошибка. Если передать значение в миллисекундах (например, 1785292800000) в функцию, ожидающую секунды, получится дата примерно через 56 000 лет в будущем.
Как определить:
- Если число имеет длину 10 цифр, скорее всего, это секунды
- Если число имеет длину 13 цифр, скорее всего, это миллисекунды
- Некоторые системы также используют микросекунды (16 цифр) или наносекунды (19 цифр)
Отрицательные метки времени (даты до 1970 года)
Unix-метки времени могут представлять даты до начала эпохи с помощью отрицательных чисел:
date -d @-126230400
# Output: Tue Dec 31 00:00:00 -1969
Не все инструменты преобразования корректно обрабатывают отрицательные метки времени. Наш онлайн-конвертер поддерживает их.
Високосные секунды
Время Unix по своей природе игнорирует високосные секунды. Unix-метка времени никогда не покажет :59:60, даже во время добавления високосной секунды. Это означает, что метка времени расходится с атомным временем на небольшую (в настоящее время 27 секунд), но растущую величину.
Сводка
| Способ | Лучше всего подходит для |
|--------|----------|
| Онлайн-конвертер (/linux-timestamp) | Быстрые разовые преобразования |
| Команда date | Пользователи терминала и скрипты |
| Ручное вычисление | Понимание принципа работы |
| Языки программирования | Автоматизация и приложения |
| Табличные процессоры | Анализ данных |
Используйте наш Конвертер Unix-меток времени для мгновенных и точных преобразований с автоматическим определением часового пояса.