JavaScript:打印前12个月 - "March"打印两次?

Tyl*_*igh 8 javascript

我正在尝试编写一个打印前12个月名称的脚本.由于这个月是1月,它应该打印:12月11月10月9月8月7月6月5月4月3月2月1月

相反,它打印三月两次.http://jsfiddle.net/h69gm04g/2/

11月10月9月8月7月6月5月4月3月3月2月

HTML

    <div id="test"></div>
Run Code Online (Sandbox Code Playgroud)

使用Javascript

    monthNames = [ "January", "February", "March", "April", "May", "June","July", "August", "September", "October", "November", "December" ];
    d = new Date();

    for (i = 0; i < 12; i++) {  
        d.setMonth(d.getMonth() - 1);      
        monthName = monthNames[d.getMonth()];       
        $('#test').append(monthNames[d.getMonth()] + "<br>");       
    }
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

aar*_*nk6 14

好一个!花了我一会儿.

原因是今天是29日.由于您的日期对象被隐式设置为当前日期,并且二月份仅二月有28天,因此您会看到三月打印两次.通过设置可选day参数来解决此问题:

d.setMonth(d.getMonth() - 1, 1);
Run Code Online (Sandbox Code Playgroud)

  • 典型的日期问题:D (2认同)