JavaScript предоставляет несколько эффективных способов извлечения названия месяца из объекта даты. В этой статье рассматриваются три распространенных метода, каждый из которых имеет свои преимущества и недостатки.
Содержание
- Использование функции
toLocaleString
- Использование объекта
Intl.DateTimeFormat
- Создание пользовательской функции
Использование функции toLocaleString
Метод toLocaleString()
предлагает краткий способ форматирования дат в соответствии с локалью пользователя. Это гарантирует, что название месяца отображается на предпочитаемом языке пользователя. Однако для выделения названия месяца требуется осторожное обращение.
const date = new Date();
const monthName = date.toLocaleString('default', { month: 'long' });
console.log(monthName); // Вывод: (например, "Октябрь", "Ноябрь" и т.д.)
// Указание локали:
const frenchMonthName = date.toLocaleString('fr-FR', { month: 'long' });
console.log(frenchMonthName); // Вывод: (например, "octobre", "novembre" и т.д.)
Локаль 'default'
использует настройки браузера пользователя. Можно указывать локали, такие как 'fr-FR'
(французский) или 'es-ES'
(испанский). Параметр month: 'long'
запрашивает полное название месяца; используйте month: 'short'
для сокращений.
Использование объекта Intl.DateTimeFormat
Объект Intl.DateTimeFormat
обеспечивает более тонкий контроль над форматированием дат, чем toLocaleString()
, позволяя выполнять сложные настройки и улучшенную обработку локали.
const date = new Date();
const options = { month: 'long' };
const formatter = new Intl.DateTimeFormat('default', options); // Или указать локаль: 'fr-FR'
const monthName = formatter.format(date);
console.log(monthName); // Вывод: (например, "Октябрь", "Ноябрь" и т.д.)
// Пример с коротким названием месяца:
const optionsShort = { month: 'short' };
const formatterShort = new Intl.DateTimeFormat('default', optionsShort);
const shortMonthName = formatterShort.format(date);
console.log(shortMonthName); // Вывод: (например, "Окт", "Ноя" и т.д.)
Несмотря на более подробный синтаксис, этот подход предлагает большую гибкость. Создание объекта DateTimeFormat
один раз и его повторное использование повышает эффективность для нескольких дат.
Создание пользовательской функции
Хотя менее эффективно и без автоматической локализации, пользовательская функция демонстрирует основной механизм. Этот подход, как правило, менее предпочтителен, чем встроенные методы.
const monthNames = ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
"Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"
];
function getMonthName(date) {
return monthNames[date.getMonth()];
}
const date = new Date();
const monthName = getMonthName(date);
console.log(monthName); // Вывод: (например, "Октябрь", "Ноябрь" и т.д.)
Эта функция использует массив для сопоставления номеров месяцев (0-11) с их названиями. Обратите внимание, что date.getMonth()
возвращает индекс, начинающийся с нуля.
В заключение, toLocaleString()
и Intl.DateTimeFormat
рекомендуются благодаря встроенной локализации. Пользовательская функция должна использоваться только при наличии специфических нестандартных требований.