Библиотека Luxon использует объект DateTime для
представления даты и времени. Одной из важнейших задач при работе со
временем является корректное форматирование часов в 12-часовом и
24-часовом представлении.
Luxon поддерживает:
24-часовой формат отображает часы в диапазоне от 00 до
23.
Пример:
13:45
23:10
08:05
toFormatimport { DateTime } from "luxon";
const dt = DateTime.now();
console.log(dt.toFormat("HH:mm"));
Возможный результат:
21:34
HHТокен:
HH
означает:
00–23.Примеры:
| Время | Результат |
|---|---|
| 5 утра | 05 |
| 14 часов | 14 |
| 23 часа | 23 |
12-часовой формат использует диапазон:
1–12
и требует дополнительного индикатора:
AM / PM
Пример:
09:15 AM
07:40 PM
const dt = DateTime.now();
console.log(dt.toFormat("hh:mm a"));
Результат:
09:42 PM
| Токен | Значение |
|---|---|
H |
часы 24ч без ведущего нуля |
HH |
часы 24ч с ведущим нулём |
h |
часы 12ч без ведущего нуля |
hh |
часы 12ч с ведущим нулём |
a |
AM/PM |
H и
HHHdt.toFormat("H:mm");
Результат:
5:07
14:07
HHdt.toFormat("HH:mm");
Результат:
05:07
14:07
h и
hhhdt.toFormat("h:mm a");
Результат:
3:20 PM
hhdt.toFormat("hh:mm a");
Результат:
03:20 PM
Токен:
a
добавляет индикатор половины суток.
Пример:
const dt = DateTime.fromObject({
hour: 18,
minute: 30
});
console.log(dt.toFormat("hh:mm a"));
Результат:
06:30 PM
00:00
в 12-часовом формате:
12:00 AM
12:00
в 12-часовом формате:
12:00 PM
Пример:
DateTime.fromObject({ hour: 0 }).toFormat("hh a");
Результат:
12 AM
const dt = DateTime.fromObject({
hour: 22,
minute: 15
});
console.log(dt.toFormat("HH:mm"));
Результат:
22:15
console.log(dt.toFormat("hh:mm a"));
Результат:
10:15 PM
Формат времени зависит от локали.
Например:
toLocaleStringLuxon поддерживает форматирование через системные региональные настройки.
const dt = DateTime.now().setLocale("en-US");
console.log(dt.toLocaleString(DateTime.TIME_SIMPLE));
Результат:
8:30 PM
const dt = DateTime.now().setLocale("de");
console.log(dt.toLocaleString(DateTime.TIME_SIMPLE));
Результат:
20:30
| Константа | Пример |
|---|---|
TIME_SIMPLE |
10:30 PM |
TIME_WITH_SECONDS |
10:30:15 PM |
TIME_24_SIMPLE |
22:30 |
TIME_24_WITH_SECONDS |
22:30:15 |
TIME_24_SIMPLEconsole.log(
dt.toLocaleString(DateTime.TIME_24_SIMPLE)
);
Результат:
21:44
TIME_SIMPLEconsole.log(
dt.toLocaleString(DateTime.TIME_SIMPLE)
);
Результат:
9:44 PM
dt.toFormat("HH:mm:ss");
Результат:
18:25:42
dt.toFormat("hh:mm:ss a");
Результат:
06:25:42 PM
Токен:
SSS
означает миллисекунды.
Пример:
dt.toFormat("HH:mm:ss.SSS");
Результат:
14:22:18.431
dt.toFormat("dd.MM.yyyy HH:mm");
Результат:
24.05.2026 18:45
dt.toFormat("dd.MM.yyyy hh:mm a");
Результат:
24.05.2026 06:45 PM
ISO всегда использует 24-часовое представление.
Пример:
console.log(dt.toISO());
Результат:
2026-05-24T18:30:45.000+03:00
const utc = DateTime.utc();
console.log(utc.toFormat("HH:mm"));
Результат:
16:20
const ny = DateTime.now().setZone("America/New_York");
console.log(ny.toFormat("hh:mm a"));
Результат:
09:15 AM
const dt = DateTime.fromObject({
hour: 21,
minute: 10
});
console.log(dt.toFormat("HH:mm"));
console.log(dt.toFormat("hh:mm a"));
Результат:
21:10
09:10 PM
const dt = DateTime.fromFormat(
"23:15",
"HH:mm"
);
console.log(dt.toFormat("hh:mm a"));
Результат:
11:15 PM
const dt = DateTime.fromFormat(
"11:20 PM",
"hh:mm a"
);
console.log(dt.toFormat("HH:mm"));
Результат:
23:20
a в
12-часовом форматеОшибка:
dt.toFormat("hh:mm");
Результат:
08:30
Невозможно определить:
Правильно:
dt.toFormat("hh:mm a");
HH
вместе с aНекорректно:
dt.toFormat("HH:mm a");
Результат:
18:30 PM
Токены конфликтуют:
HH уже использует 24-часовой формат;a предназначен только для 12-часового.const us = dt.setLocale("en-US");
const fr = dt.setLocale("fr");
console.log(us.toLocaleString(DateTime.TIME_SIMPLE));
console.log(fr.toLocaleString(DateTime.TIME_SIMPLE));
Результат:
8:45 PM
20:45
toLocalePartsМетод позволяет получить части времени отдельно.
const parts = dt.toLocaleParts({
hour: "numeric",
minute: "2-digit"
});
console.log(parts);
Результат:
[
{ type: 'hour', value: '8' },
{ type: 'literal', value: ':' },
{ type: 'minute', value: '30' }
]
dt.toFormat("HH:mm:ss");
dt.toFormat("h:mm a");
dt.toFormat("yyyy-MM-dd HH:mm:ss");
dt.toFormat("mm:ss");
function formatTime(dt, use12Hour) {
return use12Hour
? dt.toFormat("hh:mm a")
: dt.toFormat("HH:mm");
}
const dt = DateTime.now();
console.log(formatTime(dt, true));
console.log(formatTime(dt, false));
| Формат | Пример | Особенности |
|---|---|---|
HH:mm |
21:30 |
24-часовой |
H:mm |
9:30 |
без ведущего нуля |
hh:mm a |
09:30 PM |
12-часовой |
h:mm a |
9:30 PM |
компактный вид |
Подходит для:
Пример:
2026-05-24 21:45:10
Подходит для:
Пример:
9:45 PM
| Задача | Формат |
|---|---|
| 24 часа | HH:mm |
| 12 часов | hh:mm a |
| Секунды | HH:mm:ss |
| Миллисекунды | HH:mm:ss.SSS |
| ISO | toISO() |
| Локализованный вывод | toLocaleString() |
| Парсинг 24ч | fromFormat(..., "HH:mm") |
| Парсинг 12ч | fromFormat(..., "hh:mm a") |