2016-12-30 5 views
0

JS Date()オブジェクトから月の名前を取得しようとすると、「March」と「February」の複製があります。どうして?ここに私の抜粋です:Javascriptで月の名前を正しく取得できない

for (var i = 0; i < 12; i++) 
{ 
    console.log(new Date(new Date().setMonth(i)).toLocaleString('en-us', { month: 'long' })); 
} 

コンソール出力:

January 
2 March 
    April 
    May 
    June 
    July 
    August 
    September 
    October 
    November 
    December 

ありがとう!

+13

2月の30日はないので... – Sirko

+0

内部の 'new Date()'を 'new Date('01/01 ')に変更します。月を設定する前に日付オブジェクトを1月1日に初期化し、今日の日付には依存しません。 – Archer

+0

明後日に実行します) – bugwheels94

答えて

0

あなたが今年のすべての月を取得しようとしている場合は、作成するすべての日付の日付を1に設定する必要があります。今日(この回答が送信された時点)それはそうちょうどあなたのコード内の1と日付を設定し、それが正常に動作する必要があり、行進を繰り返している理由である2月のない30日、

for (var i = 0; i < 12; i++){ 
 
    console.log(new Date(new Date(new Date().setDate(1)).setMonth(i)).toLocaleString('en-us', { month: 'long' })); 
 
}
ofcourseの

はありません、30日で、コードが取得されますすべてのものでかなり汚れたnew Date()

+0

ありがとう!これは目的を破り、月の名前は適切に表示されますが、特定の月と特定の年の日数を取得すると混乱が生じます。 – Comi9

+1

また、 'new Date(2000、i、1).toLocaleString(...)'と書くこともできます。 –

関連する問題