Метод toMillis() в Luxon используется для преобразования
момента времени, представленного объектом DateTime, в
числовое значение — количество миллисекунд, прошедших с Unix-эпохи (1
января 1970 года 00:00:00 UTC). Это один из базовых способов перехода от
высокоуровневого представления даты и времени к низкоуровневому
числовому формату, который активно используется в JavaScript и смежных
системах.
Основная задача toMillis() — предоставить
унифицированное числовое представление даты, независимое от
форматирования, локали и временной зоны. Результат метода:
Number;Date.now() и
new Date().getTime().Метод особенно полезен при:
DateTime.toMillis()
Метод не принимает аргументов и возвращает число.
Объект DateTime в Luxon хранит дату с учётом временной
зоны. При вызове toMillis() происходит нормализация к
абсолютному моменту времени.
import { DateTime } from "luxon";
const dt = DateTime.local(2026, 1, 1, 12, 0);
const ms = dt.toMillis();
console.log(ms);
Результат — целое число, соответствующее этой дате в миллисекундах UTC.
Одно из ключевых свойств метода — игнорирование локального отображения времени в пользу абсолютного значения.
import { DateTime } from "luxon";
const ny = DateTime.fromObject(
{ year: 2026, month: 1, day: 1, hour: 12 },
{ zone: "America/New_York" }
);
const tokyo = DateTime.fromObject(
{ year: 2026, month: 1, day: 1, hour: 12 },
{ zone: "Asia/Tokyo" }
);
console.log(ny.toMillis());
console.log(tokyo.toMillis());
Несмотря на одинаковые «локальные» часы, результат будет различаться, поскольку момент времени в UTC не совпадает.
Метод toMillis() возвращает расширенный вариант Unix
timestamp:
toMillis() — в миллисекундах.const dt = DateTime.local();
const seconds = Math.floor(dt.toMillis() / 1000);
const millis = dt.toMillis();
Luxon также предоставляет метод toSeconds(), но
toMillis() остаётся базовым и наиболее точным
вариантом.
Числовое значение позволяет выполнять прямые вычисления:
const start = DateTime.local().toMillis();
setTimeout(() => {
const end = DateTime.local().toMillis();
console.log(end - start);
}, 1000);
Такой подход часто применяется для измерения длительности операций и интервалов.
Если DateTime невалиден, результат
toMillis() будет NaN.
const invalid = DateTime.fromISO("not-a-date");
console.log(invalid.isValid); // false
console.log(invalid.toMillis()); // NaN
Это важно учитывать при работе с пользовательским вводом и внешними данными.
Любые настройки вывода (локаль, формат, toLocaleString)
не влияют на toMillis().
Метод всегда возвращает значение в UTC-координате времени, даже если исходный объект создан в локальной зоне.
Результат предназначен только для машинной обработки, а не для отображения.
const record = {
createdAt: DateTime.now().toMillis()
};
Числовой формат упрощает индексацию и сортировку.
const a = DateTime.local(2026, 1, 1).toMillis();
const b = DateTime.local(2026, 1, 2).toMillis();
console.log(a < b);
fetch("/api/events?timestamp=" + DateTime.now().toMillis());
Числовые метки времени универсальны для разных языков и платформ.
В рамках Luxon метод toMillis() тесно связан с другими
способами представления времени:
toSeconds() — аналог в секундах;valueOf() — возвращает то же значение, что и
toMillis(), при неявном приведении;fromMillis() — обратное преобразование из числа в
DateTime.const dt = DateTime.fromMillis(1700000000000);
Объекты DateTime в Luxon не являются примитивами,
поэтому при математических операциях происходит неявный вызов
valueOf(), который фактически эквивалентен
toMillis().
const dt = DateTime.now();
console.log(+dt); // число миллисекунд
Метод выполняется за константное время и практически не создаёт нагрузки. Основные затраты возникают не в вычислении, а в последующем использовании результата.
Следует учитывать:
fromMillis();toMillis() часто выступает связующим звеном между:
Числовой формат делает время универсальным ключом для синхронизации состояний и событий в распределённых системах.