Метод toSeconds() в библиотеке Luxon используется для
получения Unix-времени в секундах из объекта DateTime. Он
преобразует внутреннее представление даты и времени в числовое значение,
отражающее количество секунд, прошедших с 1 января 1970 года 00:00:00
UTC.
Ключевая особенность метода заключается в том, что он возвращает значение с точностью до миллисекунд, представленное в виде дробного числа. Это делает его удобным для высокоточной временной арифметики, синхронизации событий и обмена временными метками между системами.
Метод вызывается у экземпляра DateTime:
dateTime.toSeconds()
Возвращаемое значение:
numberПри этом важно учитывать, что результат зависит от текущей временной
зоны объекта DateTime, если он не приведён к UTC.
Объект DateTime в Luxon хранит время в виде набора полей
(год, месяц, день, час, минута, секунда, миллисекунда) и привязку к
временной зоне. При вызове toSeconds() выполняется:
Фактически метод является удобной обёрткой над внутренним вычислением timestamp.
import { DateTime } from "luxon";
const now = DateTime.now();
const timestamp = now.toSeconds();
console.log(timestamp);
Результат:
1716451234.582
Число содержит дробную часть, отражающую миллисекунды.
const dt = DateTime.fromISO("2025-01-01T00:00:00");
const seconds = dt.toSeconds();
console.log(seconds);
Здесь важно учитывать локальную временную зону, если она не указана явно.
Для получения стабильного результата независимо от окружения используется UTC:
const dt = DateTime.fromISO("2025-01-01T00:00:00", { zone: "utc" });
console.log(dt.toSeconds());
В этом случае значение будет одинаковым во всех системах.
toMillisМетод toSeconds() часто сравнивается с
toMillis(), так как оба возвращают Unix-время, но в разных
единицах.
toSeconds() — секунды (с дробной частью)toMillis() — миллисекунды (целое число)Эквивалентность:
DateTime.now().toMillis() / 1000 === DateTime.now().toSeconds()
Разница проявляется в точности представления и удобстве интеграции с различными API.
Unix-время в секундах используется в базах данных, где требуется компактное хранение:
const record = {
createdAt: DateTime.now().toSeconds()
};
Преимущество заключается в универсальности формата и лёгкости сортировки.
Сравнение временных точек через секунды упрощает арифметику:
const a = DateTime.fromISO("2025-01-01").toSeconds();
const b = DateTime.fromISO("2025-01-02").toSeconds();
console.log(b - a); // 86400
Разница интерпретируется напрямую в секундах без дополнительных преобразований.
Многие API принимают Unix timestamp именно в секундах:
const payload = {
timestamp: DateTime.now().toSeconds()
};
Это снижает необходимость ручного преобразования форматов.
Хотя метод возвращает число с плавающей точкой, точность ограничена миллисекундами. Это означает:
Пример:
const t = DateTime.now().toSeconds();
console.log(t.toFixed(3));
Временная зона влияет на результат только косвенно — через интерпретацию исходной даты.
const dtLocal = DateTime.fromISO("2025-01-01T00:00:00");
const dtUTC = DateTime.fromISO("2025-01-01T00:00:00", { zone: "utc" });
console.log(dtLocal.toSeconds());
console.log(dtUTC.toSeconds());
Разница может быть значительной, если локальная зона отличается от UTC.
DateTime.fromISO("2025-01-01").toSeconds();
Такой код может давать разные результаты в разных средах.
DateTime.now().toSeconds() > "1716451234"
Строковое сравнение приводит к некорректной логике. Всегда использовать числовой тип.
now()DateTime.now().toSeconds() - DateTime.now().toSeconds()
Результат может быть отрицательным или равным нулю из-за различий во времени вызова.
Метод toSeconds() фактически эквивалентен:
DateTime.now().toMillis() / 1000
и опирается на Date.getTime() внутри JavaScript Date
API.
При интенсивной работе с временными метками предпочтительно:
DateTime.now() один разconst now = DateTime.now().toSeconds();
const a = now;
const b = now + 3600;
toSeconds() является одним из базовых методов экспорта
времени, наряду с:
toMillis()toISO()toJSDate()Он используется в сценариях, где требуется компактное и стандартное числовое представление времени, особенно в серверной разработке, очередях задач и аналитике событий.