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

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

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

Ответы [ 29 ]

2 голосов
/ 15 ноября 2016

Если вы не хотите использовать момент и хотите отобразить название месяца -

.config($mdDateLocaleProvider) {
    $mdDateLocaleProvider.formatDate = function(date) {      
      if(date !== null) {
        if(date.getMonthName == undefined) {
          date.getMonthName = function() {
            var monthNames = [ "January", "February", "March", "April", "May", "June", 
            "July", "August", "September", "October", "November", "December" ];
            return monthNames[this.getMonth()];
          }
        }        
        var day = date.getDate();
        var monthIndex = date.getMonth();
        var year = date.getFullYear();
        return day + ' ' + date.getMonthName() + ' ' + year;
      }
    };
  }
1 голос
/ 21 мая 2019

Другой способ форматирования даты

new Date().toLocaleString('en-us',{month:'long', year:'numeric', day:'numeric'}) //output: "May 21, 2019"
1 голос
/ 20 июля 2017
function getMonthName(month) 
{ 
return ["January","February","March","April","May","June","July","August","September", "October","November","December"][parseInt(month)-1]
}
1 голос
/ 13 сентября 2012

У меня есть частичное решение, которое я придумал. Он использует регулярное выражение для извлечения названия месяца и дня. Но когда я просматриваю «Регион» и «Язык» (Windows), я понимаю, что разные культуры имеют разный порядок форматирования ... может быть, лучше использовать шаблон регулярного выражения.

function testDateInfo() {
        var months = new Array();
        var days = new Array();
        var workingDate = new Date();
        workingDate.setHours(0, 0, 0, 0);
        workingDate.setDate(1);
        var RE = new RegExp("([a-z]+)","ig");
        //-- get day names 0-6
        for (var i = 0; i < 7; i++) {

            var day = workingDate.getDay();
            //-- will eventually be in order
            if (days[day] == undefined)
                days[day] = workingDate.toLocaleDateString().match(RE)[0];
            workingDate.setDate(workingDate.getDate() + 1);
        }
        //--get month names 0-11
        for (var i = 0; i < 12; i++) {
            workingDate.setMonth(i);
            months.push(workingDate.toLocaleDateString().match(RE)[1]);
        }
        alert(days.join(",") + " \n\r " + months.join(","));
    }
0 голосов
/ 09 августа 2018

Быстрый взлом, который я использовал, который хорошо работает:

const monthNumber = 8;
const yearNumber = 2018;
const date = `${['Jan', 'Feb', 'Mar', 'Apr',
  'May', 'Jun', 'Jul', 'Aug',
  'Sep', 'Oct', 'Nov', 'Dec'][monthNumber - 1]
      } ${yearNumber}`;

console.log(date);
0 голосов
/ 10 мая 2018

Просто напишите простую обертку вокруг toLocaleString:

function LocalDate(locale) {
  this.locale = locale;
}

LocalDate.prototype.getMonthName = function(date) {
  return date.toLocaleString(this.locale,{month:"long"});
};

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

var localDate = new LocalDate("en");
console.log(localDate.getMonthName(objDate));

localDate.locale = "ru";
console.log(localDate.getMonthName(objDate));

localDate.locale = "zh";
console.log(localDate.getMonthName(objDate));
0 голосов
/ 18 марта 2018

Используйте этот помощник

function month(a){
var mNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
return mNames[a-1];
}
0 голосов
/ 09 марта 2013

Просто расширив многие другие превосходные ответы - если вы используете jQuery - вы можете просто сделать что-то вроде

$.fn.getMonthName = function(date) {

    var monthNames = [
    "January", "February", "March",
    "April", "May", "June",
    "July", "August", "September",
    "October", "November", "December"
    ];

    return monthNames[date.getMonth()];

};

, где date равно var d = new Date(somevalue). Главным преимуществом этого является то, что, по словам @nickf, позволяет избежать глобального пространства имен.

0 голосов
/ 25 января 2014

Чтобы получить массив с названием месяца:

Date.monthNames = function( ) {
var arrMonth = [],
    dateRef = new Date(),
    year = dateRef.getFullYear();

dateRef.setMonth(0);
while (year == dateRef.getFullYear()) {
    /* push le mois en lettre et passe au mois suivant */
    arrMonth.push( (dateRef.toLocaleString().split(' '))[2] );
    dateRef.setMonth( dateRef.getMonth() + 1);
}

return arrMonth;
}

alert(Date.monthNames().toString());

// -> janvier,février,mars,avril,mai,juin,juillet,août,septembre,octobre,novembre,décembre

http://jsfiddle.net/polinux/qb346/

...