🕐
← Назад к руководствам

Как преобразовать Unix-метки времени в удобочитаемые даты

· Теги: unix-timestamp, conversion, date-conversion, timezone, epoch-converter

Зачем преобразовывать 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-меток времени для мгновенных и точных преобразований с автоматическим определением часового пояса.