Получить название месяца из даты
Заголовок: Как получить название месяца (например: Окт/Октябрь) из объекта даты в JavaScript?
Описание:
Я пытаюсь извлечь название месяца из объекта даты в JavaScript. У меня есть следующий код:
var objDate = new Date("10/11/2009");
Как я могу сгенерировать название месяца (например, "Окт" для "October") из этого объекта? Я был бы признателен за любые предложения или решение этой проблемы.
5 ответ(ов)
Вы можете создать методы на JavaScript для получения названия месяца с поддержкой локализации, используя следующий код:
Date.prototype.getMonthName = function(lang) {
lang = lang && (lang in Date.locale) ? lang : 'en';
return Date.locale[lang].month_names[this.getMonth()];
};
Date.prototype.getMonthNameShort = function(lang) {
lang = lang && (lang in Date.locale) ? lang : 'en';
return Date.locale[lang].month_names_short[this.getMonth()];
};
Date.locale = {
en: {
month_names: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
month_names_short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
}
};
После этого вы сможете легко добавить поддержку других языков, например, для французского языка:
Date.locale.fr = {
month_names: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
month_names_short: ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Jun', 'Jul', 'Août', 'Sep', 'Oct', 'Nov', 'Déc']
};
Теперь вы можете вызывать getMonthName('fr')
или getMonthNameShort('fr')
, чтобы получить название месяца на французском языке.
Если нам нужно обработать входные данные, то мы можем использовать следующий подход:
Входные данные: '2020-12-28'
Код:
new Date('2020-12-28').toLocaleString('en-us', {month: 'short', year: 'numeric'})
Вывод: "Dec 2020"
Таким образом, используя метод toLocaleString
с заданными параметрами, мы можем получить сокращенное название месяца и год из даты.
Если вас не смущает расширение прототипа Date (хотя есть хорошие причины этого не делать), вы можете создать очень простой метод:
Date.prototype.monthNames = [
"Январь", "Февраль", "Март",
"Апрель", "Май", "Июнь",
"Июль", "Август", "Сентябрь",
"Октябрь", "Ноябрь", "Декабрь"
];
Date.prototype.getMonthName = function() {
return this.monthNames[this.getMonth()];
};
Date.prototype.getShortMonthName = function () {
return this.getMonthName().substr(0, 3);
};
// использование:
var d = new Date();
alert(d.getMonthName()); // "Октябрь"
alert(d.getShortMonthName()); // "Окт"
Эти функции будут применяться ко всем объектам Date в JavaScript.
Если вы в спешке... вот вам решение!
const date = new Date(Date.now());
const month = date.toLocaleString('en-US', { month: 'short' }); // Для краткого формата месяца используйте 'short'
console.log(month); // Ожидаемый вывод: "Apr"
Этот код создаёт объект Date
, и затем использует метод toLocaleString
, чтобы получить название месяца в сокращённом формате для локали 'en-US'. В данном случае, если текущая дата в апреле, вывод будет "Apr"
.
Вы можете добавить метод getMonthName
к прототипу объекта Date
, чтобы получить название месяца в виде строки. Вот как это можно сделать:
Date.prototype.getMonthName = function() {
var monthNames = [ "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь",
"Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь" ];
return monthNames[this.getMonth()];
}
Теперь вы можете использовать этот метод следующим образом:
var month_Name = new Date().getMonthName();
Таким образом, переменная month_Name
будет содержать название текущего месяца на русском языке.
Где найти документацию по форматированию даты в JavaScript?
Преобразование Unix-метки времени в формат времени в JavaScript
Форматирование даты в JavaScript в виде yyyy-mm-dd
Как вычесть дни из обычной даты?
Как преобразовать дату в UTC?