繁体   English   中英

从当前月份开始的几个月中,您如何倒退?

[英]How do you loop backwards through the months starting with the current one?

我正在使用JavaScript,试图填充条形图。 图表的最后一行是当月(撰写本文时为2014年11月,如果使用JavaScript的Date()。getMonth()方法,则为10)。 它从上一年的下个月开始计数(即2013年12月,如果使用getMonth(),则为11)。

我的问题是:从当前时间开始的11个月开始,使12个月的时间循环最有效的方法是什么?

我的首选输出是:

  • 2013年12月
  • 2014年1月
  • 2014年2月
  • ...
  • 2014年11月

您可以使用for循环并从当前日期减去月份。 就像下面所做的一样:

 var dateObj = new Date(); var dateStrings = []; var dateFormatOptions = { month: 'long', year: 'numeric' }; for (var i = 0; i < 12; ++i) { dateStrings.unshift(dateObj.toLocaleString('en-US', dateFormatOptions)); dateObj.setMonth(dateObj.getMonth() - 1); } document.getElementById("output").innerHTML = dateStrings.join("\\n"); 
 <pre id="output"></pre> 

此代码将使用所需的日期字符串创建一个数组。

可能的解决方案:

var date = new Date();
var dates = [];
var i, len;

for (i = 0, len = 12; i < len; i++) {
    date.setMonth(date.getMonth() - 1);

    dates.unshift(date.toLocaleString('en-us', {
        month: 'long',
        year: 'numeric'
    }));
}

像这样:

 var months = [ "January" , "February" , "March" , "April" , "May" , "June" , "July" , "August" , "September" , "October" , "November" , "December" ]; var now = new Date; var month = now.getMonth() + 1; var year = now.getFullYear() - 1; if (month === 12) { month = 0; year++; } for (var i = 0; i < 12; i++) { console.log(months[month++] + " " + year); if (month === 12) { month = 0; year++; } } 

我只会使用for循环并在溢出时减去年份(和设置的日期):

 var date = new Date(); var currentMonth = date.getMonth(); var currentYear = date.getFullYear(); console.log(currentYear) var month = ["January","February","March","April","May","June","July", "August","September","October","November","December"]; var myArray = []; for(var i = 0; i < 12; i++){ if(currentMonth == - 1){ currentMonth = 11; date.setFullYear(parseInt(currentYear) - 1); currentYear = date.getFullYear(); } myArray.push(month[currentMonth]+" "+currentYear); currentMonth--; } alert(myArray); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM