Загрузка...
Загрузка...
Руководство по Unix timestamp: определение, диапазоны, конвертация в JavaScript, Python, SQL. Часовые пояса и типичные задачи.
Подробное руководство по регулярным выражениям. Синтаксис, метасимволы, группы, lookahead, lookbehind. Практические примеры для JavaScript, Python, PHP.
РазработкаКак конвертировать CSV в JSON и обратно. Форматы данных, разделители, обработка кавычек, практические примеры на JavaScript и Python.
РазработкаПолная шпаргалка по регулярным выражениям: метасимволы, квантификаторы, группы, lookahead/lookbehind, флаги. Справочник с примерами для разработчиков.
Разработка20 практических regex-паттернов: email, телефон, URL, IP, дата, пароль, HTML, логи. Готовые решения для валидации и парсинга.
Поделитесь с коллегами или изучите другие материалы блога
Unix timestamp — количество секунд, прошедших с 1 января 1970 года 00:00:00 UTC. Компактное представление даты и времени, независимое от локали и часового пояса. В этой статье разберём структуру, ограничения, конвертацию в основных языках и типичные сценарии использования.
Для быстрой конвертации timestamp в дату и обратно используйте Timestamp конвертер на reChecker.
Unix timestamp (epoch time, POSIX time) — целое число секунд с полуночи 1 января 1970 года по UTC. Дробная часть (миллисекунды) поддерживается в некоторых системах.
0 → 1970-01-01 00:00:00 UTC
86400 → 1970-01-02 00:00:00 UTC (1 день)
1738800000 → 2025-02-06 12:00:00 UTC (примерно)
| Преимущество | Описание |
|---|---|
| Компактность | Одно число вместо строки |
| Сравнение | Легко сравнивать и сортировать |
| Арифметика | Разность двух timestamp — интервал в секундах |
| Независимость | Не зависит от формата даты и локали |
| API | Стандарт для многих REST API и баз данных |
Классический Unix timestamp в 32 битах (signed):
| Граница | Дата | Timestamp |
|---|---|---|
| Минимум | 1901-12-13 | -2147483648 |
| Максимум | 2038-01-19 | 2147483647 |
Проблема «Year 2038»: после 19 января 2038 года 32-битное значение переполнится. Решение — 64-битные системы и типы.
В JavaScript Date использует миллисекунды с 1 января 1970. Диапазон значительно шире. В базах данных (PostgreSQL, MySQL) есть типы BIGINT для 64-битного timestamp.
// Текущее время в секундах
Math.floor(Date.now() / 1000);
// Текущее время в миллисекундах
Date.now();
// Timestamp → Date
const ts = 1738800000;
const date = new Date(ts * 1000); // JS работает с миллисекундами
console.log(date.toISOString()); // "2025-02-06T12:00:00.000Z"
// Date → Timestamp
const d = new Date('2025-02-06T12:00:00Z');
Math.floor(d.getTime() / 1000); // 1738800000
import time
from datetime import datetime
# Текущее время в секундах
time.time()
# Timestamp → datetime
ts = 1738800000
dt = datetime.utcfromtimestamp(ts)
print(dt.isoformat()) # 2025-02-06 12:00:00
# datetime → Timestamp
dt = datetime(2025, 2, 6, 12, 0, 0)
int(dt.timestamp())
-- Текущее время
SELECT EXTRACT(EPOCH FROM NOW());
-- Timestamp → дата
SELECT TO_TIMESTAMP(1738800000);
-- Дата → Timestamp
SELECT EXTRACT(EPOCH FROM TIMESTAMP '2025-02-06 12:00:00');
-- Timestamp → дата
SELECT FROM_UNIXTIME(1738800000);
-- Дата → Timestamp
SELECT UNIX_TIMESTAMP('2025-02-06 12:00:00');
Unix timestamp всегда в UTC. При отображении пользователю конвертируйте в локальную зону:
const ts = 1738800000;
const date = new Date(ts * 1000);
// Локальное время пользователя
console.log(date.toLocaleString('ru-RU'));
// Формат по часовому поясу
console.log(date.toLocaleString('ru-RU', { timeZone: 'Europe/Moscow' }));
В базе данных храните UTC. Конвертацию в локальное время делайте на уровне приложения или при выводе.
const start = new Date('2025-01-01');
const end = new Date('2025-01-15');
const diffSeconds = (end - start) / 1000;
const diffDays = diffSeconds / 86400;
const ts = 1738800000;
const dayLater = ts + 86400; // +1 день
const hourLater = ts + 3600; // +1 час
function isToday(timestamp) {
const d = new Date(timestamp * 1000);
const today = new Date();
return d.toDateString() === today.toDateString();
}
const ts = 1738800000;
const date = new Date(ts * 1000);
const formatted = date.toLocaleDateString('ru-RU', {
year: 'numeric',
month: 'long',
day: 'numeric',
hour: '2-digit',
minute: '2-digit'
});
// "6 февраля 2025 г., 12:00"
JavaScript Date принимает миллисекунды. Передача секунд даёт дату в 1970 году:
new Date(1738800000); // 1970-01-21 (неправильно)
new Date(1738800000 * 1000); // 2025-02-06 (правильно)
Unix timestamp не учитывает високосные секунды. Для большинства приложений это не критично.
Строка "2025-02-06 12:00" без указания зоны может интерпретироваться по-разному. Используйте ISO 8601 с зоной: "2025-02-06T12:00:00Z".
Инструмент Timestamp на reChecker позволяет конвертировать даты в timestamp и обратно, а также проверять корректность значений.