2016-12-30 43 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

因为没有二月三十日... – Sirko

+0

将内部'new Date()'更改为'New Date('01/01')'它会将日期对象初始化为1月1日,然后再设置月份,而不再依赖今天的日期。 – Archer

+0

后天运行;) – bugwheels94

回答

0

如果要获得您计划要做的一年中的所有月份,那么您必须将所有创建日期的日期设置为1,因为如今天(截至发送此答案的那天)是30日,不存在月30日,这就是为什么它被重复行军,所以只设置日期为您的代码1,它应该做工精细,

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,代码将越来越相当凌乱的所有new Date()

+0

谢谢!好吧,这打破了目的,月份名称显示正确,但是从特定月份和特定年份获得天数时会出现乱七八糟的情况。 – Comi9

+1

或者你可以直接写'new Date(2000,i,1).toLocaleString(...)'。 –