Библиотека Globalize поддерживает несколько уровней представления даты и времени. Основной механизм построен вокруг стандарта CLDR (Common Locale Data Repository), благодаря которому форматирование автоматически учитывает региональные правила: порядок компонентов даты, сокращения месяцев, особенности записи времени, использование 12- или 24-часового формата.
Наиболее востребованные варианты форматирования:
short);medium);long);full).Каждый из них определяет степень детализации отображаемых данных.
Для работы с датами необходимы модули CLDR и соответствующий функционал библиотеки.
const Globalize = require("globalize");
Globalize.load(
require("cldr-data/main/en/ca-gregorian.json"),
require("cldr-data/main/en/timeZoneNames.json"),
require("cldr-data/supplemental/likelySubtags.json")
);
Globalize.locale("en");
После инициализации становятся доступны методы форматирования даты и времени.
Короткий формат предназначен для компактного отображения даты или времени. Обычно используется:
const formatter = Globalize.dateFormatter({
date: "short"
});
console.log(formatter(new Date()));
Пример результата для локали en:
5/27/26
Для русской локали:
Globalize.locale("ru");
const formatter = Globalize.dateFormatter({
date: "short"
});
console.log(formatter(new Date()));
Результат:
27.05.2026
Короткий формат:
const formatter = Globalize.dateFormatter({
time: "short"
});
console.log(formatter(new Date()));
Пример:
14:25
Для англоязычных локалей возможен формат:
2:25 PM
Поведение зависит от региональных настроек CLDR.
const formatter = Globalize.dateFormatter({
datetime: "short"
});
console.log(formatter(new Date()));
Результат:
5/27/26, 2:25 PM
или:
27.05.2026, 14:25
Средний формат считается наиболее универсальным. Он обеспечивает баланс между компактностью и читаемостью.
const formatter = Globalize.dateFormatter({
date: "medium"
});
console.log(formatter(new Date()));
Пример:
May 27, 2026
Для русской локали:
27 мая 2026 г.
Средний формат обычно:
const formatter = Globalize.dateFormatter({
time: "medium"
});
console.log(formatter(new Date()));
Результат:
14:25:48
или:
2:25:48 PM
Средний формат времени часто включает секунды.
const formatter = Globalize.dateFormatter({
datetime: "medium"
});
console.log(formatter(new Date()));
Пример:
May 27, 2026, 2:25:48 PM
Длинный формат применяется там, где требуется более официальное или детализированное представление даты.
Типичные сценарии:
const formatter = Globalize.dateFormatter({
date: "long"
});
console.log(formatter(new Date()));
Пример:
May 27, 2026
Для некоторых локалей длинный формат отличается расширенным названием месяца или дополнительными элементами.
Русская локаль:
27 мая 2026 г.
const formatter = Globalize.dateFormatter({
time: "long"
});
console.log(formatter(new Date()));
Возможный результат:
2:25:48 PM GMT+3
Особенности:
const formatter = Globalize.dateFormatter({
datetime: "long"
});
console.log(formatter(new Date()));
Пример:
May 27, 2026 at 2:25:48 PM GMT+3
Полный формат (full) содержит максимально подробную
информацию.
Используется:
const formatter = Globalize.dateFormatter({
date: "full"
});
console.log(formatter(new Date()));
Пример:
Wednesday, May 27, 2026
Русская локаль:
среда, 27 мая 2026 г.
const formatter = Globalize.dateFormatter({
time: "full"
});
console.log(formatter(new Date()));
Результат:
2:25:48 PM GMT+03:00
Полный формат времени:
const formatter = Globalize.dateFormatter({
datetime: "full"
});
console.log(formatter(new Date()));
Пример:
Wednesday, May 27, 2026 at 2:25:48 PM GMT+03:00
| Формат | Пример | Особенности |
|---|---|---|
| short | 5/27/26 | Максимальная компактность |
| medium | May 27, 2026 | Хорошая читаемость |
| long | May 27, 2026 at 2:25 PM GMT+3 | Дополнительные детали |
| full | Wednesday, May 27, 2026 at 2:25 PM GMT+03:00 | Полная информация |
Одно из ключевых преимуществ Globalize — автоматическая адаптация форматов под регион.
Например:
Globalize.locale("en");
5/27/26
Globalize.locale("de");
27.05.26
Globalize.locale("ja");
2026/05/27
Порядок компонентов даты меняется автоматически без дополнительной логики.
Часто требуется динамически переключать язык интерфейса.
function formatDate(locale, date) {
Globalize.locale(locale);
const formatter = Globalize.dateFormatter({
datetime: "medium"
});
return formatter(date);
}
console.log(formatDate("en", new Date()));
console.log(formatDate("fr", new Date()));
console.log(formatDate("ru", new Date()));
Создание форматтера — относительно дорогая операция. В крупных приложениях рекомендуется переиспользование объектов форматирования.
Нежелательный вариант:
function renderDate(date) {
return Globalize.dateFormatter({
datetime: "medium"
})(date);
}
Оптимизированный вариант:
const formatter = Globalize.dateFormatter({
datetime: "medium"
});
function renderDate(date) {
return formatter(date);
}
Во многих интерфейсах требуется отображать исключительно время.
const shortTime = Globalize.dateFormatter({
time: "short"
});
const mediumTime = Globalize.dateFormatter({
time: "medium"
});
const longTime = Globalize.dateFormatter({
time: "long"
});
Различия:
14:25
14:25:48
14:25:48 GMT+3
const shortDate = Globalize.dateFormatter({
date: "short"
});
const mediumDate = Globalize.dateFormatter({
date: "medium"
});
const fullDate = Globalize.dateFormatter({
date: "full"
});
Пример вывода:
27.05.26
27 мая 2026 г.
среда, 27 мая 2026 г.
import Globalize from "globalize";
const dateFormatter = Globalize.dateFormatter({
datetime: "medium"
});
function DateView({ value }) {
return (
<span>{dateFormatter(value)}</span>
);
}
const http = require("http");
const formatter = Globalize.dateFormatter({
datetime: "long"
});
http.createServer((req, res) => {
res.end(formatter(new Date()));
});
Библиотека Globalize не хранит правила локализации внутри себя. Все шаблоны берутся из CLDR.
Это означает:
shortПодходит для:
mediumПодходит для:
longПодходит для:
fullПодходит для:
Если не загрузить необходимые JSON-файлы, форматирование завершится ошибкой.
Неправильно:
const formatter = Globalize.dateFormatter({
date: "short"
});
Правильно:
Globalize.load(
require("cldr-data/main/en/ca-gregorian.json")
);
Ошибка производительности:
for (const item of items) {
const formatter = Globalize.dateFormatter({
date: "medium"
});
console.log(formatter(item.date));
}
Оптимизированный вариант:
const formatter = Globalize.dateFormatter({
date: "medium"
});
for (const item of items) {
console.log(formatter(item.date));
}
Слишком длинные форматы ухудшают читаемость интерфейса.
Плохо для таблицы:
Wednesday, May 27, 2026 at 2:25:48 PM GMT+03:00
Лучше:
5/27/26
или:
May 27, 2026
Форматы даты и времени могут использоваться отдельно в разных частях интерфейса.
Пример:
const dateFormatter = Globalize.dateFormatter({
date: "medium"
});
const timeFormatter = Globalize.dateFormatter({
time: "short"
});
console.log(dateFormatter(new Date()));
console.log(timeFormatter(new Date()));
Результат:
May 27, 2026
2:25 PM
const logFormatter = Globalize.dateFormatter({
datetime: "long"
});
console.log(
`[${logFormatter(new Date())}] Server started`
);
Пример:
[May 27, 2026 at 2:25:48 PM GMT+3] Server started
Длинные и полные форматы автоматически используют данные о временных зонах из CLDR.
Для этого необходим модуль:
require("cldr-data/main/en/timeZoneNames.json")
Без него информация о часовых поясах может отображаться некорректно или отсутствовать полностью.
Globalize во многом повторяет концепции встроенного API
Intl.DateTimeFormat, но предоставляет:
Пример аналогичного поведения:
new Intl.DateTimeFormat("en", {
dateStyle: "short"
});
В Globalize:
Globalize.dateFormatter({
date: "short"
});