JavaScript: форматирование даты через Intl

Категория: JavaScript · Язык: JavaScript · Обновлено:

Для вывода даты в JavaScript используйте Intl.DateTimeFormat: он учитывает локаль, часовой пояс и нужные части даты. Например, new Intl.DateTimeFormat('ru-RU').format(new Date()) вернёт дату в привычном русском формате; для машинного обмена оставьте ISO-строку.

Краткий пример

JavaScript
const date = new Date('2026-10-25T12:30:00Z');
const formatter = new Intl.DateTimeFormat('ru-RU', {
  dateStyle: 'long',
  timeStyle: 'short',
  timeZone: 'Europe/Moscow'
});
console.log(formatter.format(date)); // 25 октября 2026 г. в 15:30

Intl принимает локаль и параметры отображения; используйте IANA-идентификатор часового пояса, чтобы результат не зависел от настроек компьютера.

Дата без времени

JavaScript
const shortDate = new Intl.DateTimeFormat('ru-RU', {
  day: '2-digit', month: '2-digit', year: 'numeric',
  timeZone: 'UTC'
});
console.log(shortDate.format(new Date('2026-10-25T00:00:00Z'))); // 25.10.2026

Части даты для собственного шаблона

JavaScript
const parts = new Intl.DateTimeFormat('ru-RU', {
  dateStyle: 'long', timeZone: 'UTC'
}).formatToParts(new Date('2026-10-25T00:00:00Z'));
const values = Object.fromEntries(parts.map(({type, value}) => [type, value]));
console.log(`${values.day} ${values.month} ${values.year}`); // 25 октября 2026

Задача

Решение

Удобный текст для интерфейса

Intl.DateTimeFormat(locale, options).format(date)

Дата для API или хранения

ISO 8601, например date.toISOString()

Собрать собственный шаблон

formatToParts()

Как задать часовой пояс?

Передайте timeZone: 'Europe/Moscow' или другой поддерживаемый IANA-идентификатор. Без параметра используется зона среды выполнения.

Как получить дату в формате для базы?

Храните timestamp в ISO 8601/UTC, например new Date().toISOString(). Локализованную строку оставьте для показа пользователю.