Метод DateTime.fromMillis() в
библиотеке Luxon используется для создания объекта DateTime на основе
количества миллисекунд, прошедших с начала Unix-эпохи (1 января 1970
года, UTC). Это один из базовых способов преобразования числового
временного представления в полноценный объект даты с поддержкой часовых
поясов, локалей и встроенных методов форматирования.
DateTime.fromMillis(milliseconds, options)
milliseconds (number) Целое число, представляющее количество миллисекунд с Unix-эпохи.
options (object, необязательный) Объект конфигурации, определяющий контекст создания DateTime:
zone — часовой пояс (например, "utc",
"Europe/London", "Asia/Almaty")locale — локаль (например, "ru",
"en")setZone — логическое значение, определяющее, следует ли
интерпретировать переданный часовой пояс как активныйnumberingSystem — система счисления (например,
"latn")При вызове fromMillis() Luxon интерпретирует входное
значение как абсолютную точку времени.
import { DateTime } from "luxon";
const dt = DateTime.fromMillis(0);
console.log(dt.toISO());
Результат:
1970-01-01T00:00:00.000Z
По умолчанию используется UTC, если не задан другой часовой пояс.
Одно из ключевых преимуществ Luxon — корректная работа с зонами времени.
const dt = DateTime.fromMillis(0, { zone: "Asia/Tokyo" });
console.log(dt.toString());
Здесь момент времени остаётся тем же, но отображение смещается относительно выбранной зоны.
zone влияет только на интерпретацию и отображениеDateTime.fromMillis(0, { zone: "Asia/Tokyo", setZone: true });
setZone: false (по умолчанию) — Luxon переводит время в
указанную зонуsetZone: true — сохраняет переданную зону как активную
без преобразования отображенияЭто критично при работе с уже локализованными временными данными.
const timestamp = 1710000000000;
const dt = DateTime.fromMillis(timestamp, {
zone: "UTC"
});
console.log(dt.toISO());
Используется в API, базах данных и системах логирования, где время хранится как число.
DateTime.fromMillis(1000);
DateTime.fromSeconds(1);
Оба выражения дают одинаковый результат, но:
fromMillis — стандарт для JavaScriptfromSeconds — удобен для Unix timestamp в секундахDateTime.fromMillis(Date.now());
DateTime.fromJSDate(new Date());
Разница:
fromMillis работает напрямую с числомfromJSDate использует объект DateJavaScript использует миллисекунды, поэтому:
DateTime.fromMillis(1710000000123);
Luxon сохраняет точность до миллисекунд, что важно для:
Luxon автоматически обрабатывает выходящие за диапазон значения:
DateTime.fromMillis(-1000);
Результат — дата до Unix-эпохи, корректно интерпретируемая системой.
const dt = DateTime.fromMillis(Date.now(), {
locale: "ru"
});
console.log(dt.toLocaleString());
Локаль влияет на:
Объект DateTime можно немедленно преобразовать:
const dt = DateTime.fromMillis(1710000000000);
dt.toISO(); // ISO строка
dt.toLocaleString(); // локализованный формат
dt.toFormat("dd.MM.yyyy HH:mm");
const result = DateTime
.fromMillis(1710000000000)
.setZone("Europe/Berlin")
.plus({ days: 2 })
.toFormat("yyyy-MM-dd HH:mm");
Метод fromMillis() часто выступает стартовой точкой
цепочки преобразований.
DateTime.fromMillis(apiResponse.timestamp);
DateTime.fromMillis(log.createdAt);
DateTime.fromMillis(row.updated_at_ms);
DateTime.fromMillis(event.time);
DateTime.fromMillis("abc");
Результат: Invalid DateTime
DateTime.fromMillis(null);
Также приводит к невалидному объекту, так как требуется число.
При экстремально больших числах возможны:
fromMillis() относится к самым быстрым способам создания
DateTime, так как:
Оптимально для высоконагруженных систем и потоковой обработки событий.
DateTime.fromMillis(1710000000000, { zone: "utc" });
UTC является базовой системой отсчёта:
const dt = DateTime.fromMillis(1710000000000);
dt.toMillis();
Метод toMillis() возвращает исходное значение или его
эквивалент после преобразований (если изменялась зона — возвращается
абсолютное время).
const unix = 1710000000;
const dt = DateTime.fromMillis(unix * 1000);
Типичная ошибка — путаница между секундами и миллисекундами.
DateTime.fromMillis(1710000000000);
По умолчанию:
Метод fromMillis() часто используется как:
Он обеспечивает строгое разделение между: