885

JavaScript でこの日付オブジェクトから月の名前 (例: Oct/October) を生成するにはどうすればよいですか?

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

39 に答える 39

1376

短いバージョン:

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

const d = new Date();
document.write("The current month is " + monthNames[d.getMonth()]);

(2019-03-08) - 2009 年に最初に書いた私によるこの回答は古くなっています。より良い解決策については、David Storey の回答を参照してください。

于 2009-10-29T12:45:41.380 に答える
169

これは、ローカライズをサポートする別のものです:)

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: [...]};
于 2009-10-29T12:54:35.997 に答える
71

次のように使用できるmoment.jsformatライブラリの関数を心からお勧めします。

moment().format("MMM");  // "Apr" - current date
moment(new Date(2012, 01, 04)).format("MMM");  // "Feb" - from a local date
moment.utc(new Date(2012, 00, 04).format("MMM"); // "Jan" - from a UTC date

月の完全な名前が必要な場合は、「MMM」の代わりに「MMMM」を使用してください

他の機能の長いリストに加えて、国際化を強力にサポートしています。

于 2013-04-18T17:28:24.183 に答える
64

Date プロトタイプを拡張することを気にしない場合 (およびこれを行いたくない正当な理由がいくつかある場合) は、実際には非常に簡単な方法を考え出すことができます。

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

Date.prototype.getMonthName = function() {
    return this.monthNames[this.getMonth()];
};
Date.prototype.getShortMonthName = function () {
    return this.getMonthName().substr(0, 3);
};

// usage:
var d = new Date();
alert(d.getMonthName());      // "October"
alert(d.getShortMonthName()); // "Oct"

これらの関数は、すべてのJavaScript Date オブジェクトに適用されます。

于 2009-10-29T12:52:53.550 に答える
29

Date.toLocaleDateString() を使用するだけで、必要な日付をパラメーターとして解析できます

const event = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));

const options = {  year: 'numeric', month: 'short', day: 'numeric' };

console.log(event.toLocaleDateString('de-DE', options));
// expected output: Donnerstag, 20. Dezember 2012

console.log(event.toLocaleDateString('en-US', options));
// US format 


// In case you only want the month
console.log(event.toLocaleDateString(undefined, { month: 'short'}));
console.log(event.toLocaleDateString(undefined, { month: 'long'}));

詳細については、Firefox のドキュメントを参照してください。

于 2020-05-20T12:50:56.453 に答える
24
Date.prototype.getMonthName = function() {
    var monthNames = [ "January", "February", "March", "April", "May", "June", 
                       "July", "August", "September", "October", "November", "December" ];
    return monthNames[this.getMonth()];
}

として使用できます

var month_Name = new Date().getMonthName();
于 2012-06-12T12:05:01.770 に答える
16

これを行うには、 datejsを使用できます。FormatSpecifiersを確認してください。MMMMは月の名前を示します。

var objDate = new Date("10/11/2009");
document.write(objDate.toString("MMMM"));

そして、datejs はそれを 150 以上のロケールにローカライズしました! こちらをご覧ください

于 2009-10-29T15:35:42.927 に答える
12

ハードコードされた配列に依存せず、複数のロケールをサポートする方法を次に示します。

配列全体が必要な場合:

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 では、日付全体が返されるため、いくつかの変更が必要です。

于 2014-02-13T08:08:52.513 に答える
8

残念ながら、月の名前を抽出する最善の方法は、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'
于 2014-03-06T23:06:03.603 に答える
7

利用可能ないくつかの日付フォーマッタのいずれかを使用できます。これは 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にさらにあります

于 2013-05-30T04:14:23.787 に答える
4

外部ライブラリを使用したくない場合、または月名の配列を保存したくない場合、またはブラウザの互換性のために ECMAScript 国際化 API が十分でない場合は、日付出力:

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

これにより、10月などの省略された月の名前が得られます。日付は、初期化とロケールに応じてあらゆる種類の形式になると思いますので、何toDateString()が返されるかを見てsubstring()、それに基づいて値を再計算してください。

于 2014-05-28T22:25:54.807 に答える
4

最も簡単で簡単な方法。

  1. 日付を文字列に変換します。
  2. ' ' スペースで分割します。
  3. 配列から の 2 番目の要素を選択します。

   
var now = new Date();
var nowStr = now.toDateString(); 
// "Fri Apr 2020'

var currentMonth = nowStr.split(' '); 
// ['Fri' 'Apr' '2020']

console.log(currentMonth[1]);
// 'Apr'
         

于 2020-04-10T17:34:33.290 に答える
3

momentjsでは、形式表記を使用するだけです。

const myDate = new Date()
const shortMonthName = moment(myDate).format('MMM') // Aug
const fullMonthName = moment(myDate).format('MMMM') // August
于 2016-08-04T04:29:06.180 に答える
2

moment を使わずに月名を表示したい場合 -

.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;
      }
    };
  }
于 2016-11-15T10:36:27.140 に答える
1

私が思いついた部分的な解決策があります。正規表現を使用して月と日の名前を抽出します。しかし、地域と言語のオプション (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(","));
    }
于 2012-09-12T21:35:15.880 に答える
1

名前を配列に格納し、月のインデックスで検索します。

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() メソッド

于 2009-10-29T12:22:08.157 に答える
0

他の多くの優れた回答を拡張するだけです-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 がグローバル名前空間の回避について述べたことです。

于 2013-03-09T06:36:18.840 に答える
0

月名の配列を取得するには:

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/

于 2014-01-24T22:26:25.097 に答える
0

周りに簡単なラッパーを書くだけ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));

于 2018-05-10T16:21:38.030 に答える