Получить название месяца от даты - PullRequest
577 голосов
/ 29 октября 2009

Как я могу сгенерировать название месяца (например, октябрь / октябрь) из этого объекта даты в JavaScript?

var objDate = new Date("10/11/2009");

Ответы [ 29 ]

8 голосов
/ 07 марта 2014

К сожалению, лучший способ извлечь название месяца из представления UTCString:

Date.prototype.monthName = function() {
    return this.toUTCString().split(' ')[2]
};

d = new Date();
//=> Thu Mar 06 2014 23:05:21 GMT+0000 (GMT)

d.monthName();
//=> 'Mar'
8 голосов
/ 13 февраля 2014

Вот способ, который не зависит от жестко запрограммированного массива и поддерживает несколько локалей.

Если вам нужен целый массив:

var monthsLocalizedArray = function(locale) {
    var result = [];
    for(var i = 0; i < 12; i++) {
        result.push(new Date(2010,i).toLocaleString(locale,{month:"long"}));
    }
    return result;
};

Использование:

console.log(monthsLocalizedArray('en')); // -> ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
console.log(monthsLocalizedArray('bg')); // -> ["януари", "февруари", "март", "април", "май", "юни", "юли", "август", "септември", "октомври", "ноември", "декември"]

Если вам нужен только выбранный месяц (быстрее):

var monthLocalizedString = function(month, locale) {
    return new Date(2010,month).toLocaleString(locale,{month:"long"});
};

Использование:

console.log(monthLocalizedString(1, 'en')); // -> February
console.log(monthLocalizedString(1, 'bg')); // -> февруари
console.log(monthLocalizedString(1, 'de')); // -> Februar

Протестировано и отлично работает на Chrome и IE 11. На Mozilla необходимы некоторые модификации, потому что он возвращает всю дату.

7 голосов
/ 05 августа 2016

Вместо того, чтобы объявлять массив, который содержит все название месяца, а затем указывать с индексом, мы также можем записать его в более короткой версии, как показано ниже:

var objDate = new Date().toLocaleString("en-us", { month: "long" }); // result: August
var objDate = new Date().toLocaleString("en-us", { month: "short" }); // result: Aug
6 голосов
/ 30 мая 2013

Вы можете использовать один из нескольких доступных форматеров даты. Поскольку это входит в спецификацию JavaScript, оно будет доступно как в браузерном, так и в серверном режимах.

objDate.toString().split(" ")[1]; // gives short name, unsure about locale 
objDate.toLocaleDateString.split(" ")[0]; // gives long name

, например

js> objDate = new Date(new Date() - 9876543210)
Mon Feb 04 2013 12:37:09 GMT-0800 (PST)
js> objDate.toString().split(" ")[1]
Feb
js> objDate.toLocaleString().split(" ")[0]
February

Есть еще на https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

4 голосов
/ 04 августа 2016

С momentjs , просто используйте формат .

const myDate = new Date()
const shortMonthName = moment(myDate).format('MMM') // Aug
const fullMonthName = moment(myDate).format('MMMM') // August
3 голосов
/ 24 мая 2013

Если вы используете jQuery, вы, вероятно, также используете jQuery UI, что означает, что вы можете использовать $. Datepicker.formatDate () .

$.datepicker.setDefaults( $.datepicker.regional[ "nl" ] );   // dutch
$.datepicker.formatDate( "dd MM yy", objDate );
3 голосов
/ 08 августа 2014

Мое лучшее решение заключается в следующем:

       var dateValue = Date();
       var month = dateValue.substring(4,7);
       var date = dateValue.substring(8,10);
       var year = dateValue.substring(20,24);
       var finaldateString = date+"-"+month+"-"+year;
3 голосов
/ 29 мая 2014

Если вы не хотите использовать внешнюю библиотеку или хранить массив названий месяцев, или если API интернационализации ECMAScript недостаточно хорош из-за совместимости с браузером, вы всегда можете сделать это старомодным способом, извлекая информация из вывода даты:

var now = new Date();
var monthAbbrvName = now.toDateString().substring(4, 7);

Это даст вам сокращенное название месяца, например, Октябрь. Я полагаю, что дата придет во всевозможных форматах, в зависимости от инициализации и вашей локали, поэтому посмотрите, что toDateString() возвращает, и пересчитайте ваши substring() значения, основанные на этом.

3 голосов
/ 29 октября 2009

Сохранение имен в массиве и поиск по индексу месяца.

var month=new Array(12);
month[0]="January";
month[1]="February";
month[2]="March";
month[3]="April";
month[4]="May";
month[5]="June";
month[6]="July";
month[7]="August";
month[8]="September";
month[9]="October";
month[10]="November";
month[11]="December";

document.write("The current month is " + month[d.getMonth()]);

JavaScript метод getMonth ()

2 голосов
/ 10 апреля 2017

Это также можно сделать, если вы используете кендо.

kendo.toString(dateobject, "MMMM");

Вот список форматеров с сайта kendo :

"d" Отображает день месяца с 1 по 31.

"дд" День месяца, с 01 по 31.

"ddd" Сокращенное название дня недели.

"dddd" Полное название дня недели.

"f" Десятые доли секунды в значении даты и времени.

"ff" Сотые доли секунды в значении даты и времени.

"fff" Миллисекунды в значении даты и времени.

"М" Месяц с 1 по 12.

"ММ" Месяц с 01 по 12.

"МММ" Сокращенное название месяца.

"ММММ" Полное название месяца.

"ч" Час, с использованием 12-часовых часов от 1 до 12.

"чч" Час, с использованием 12-часовых часов с 01 до 12.

«Ч» Час, с использованием 24-часовых часов от 1 до 23.

«ЧЧ» Час, с использованием 24-часовых часов с 01 до 23.

"м" Минуты от 0 до 59.

"мм" минуты, с 00 до 59.

"s" Второй, от 0 до 59.

"ss" Второй, с 00 по 59.

"tt" Обозначение AM / PM.

"yy" Два последних символа из значения года.

"гггг" Год полной стоимости.

"zzz" Местный часовой пояс при использовании форматов для разбора строк даты UTC.

...