JavaScript:打印前12个月--”;三月“;打印两次?
我正在写一个脚本,打印过去12个月的名字。因为这个月是一月,所以应该打印:十二月 十一月 十月 九月 八月 七月 六月 也许 四月 前进 二月 一月 相反,它会打印两次三月 十一月 十月 九月 八月 七月 六月 也许 四月 前进 前进 二月 HTMLJavaScript:打印前12个月--”;三月“;打印两次?,javascript,Javascript,我正在写一个脚本,打印过去12个月的名字。因为这个月是一月,所以应该打印:十二月 十一月 十月 九月 八月 七月 六月 也许 四月 前进 二月 一月 相反,它会打印两次三月 十一月 十月 九月 八月 七月 六月 也许 四月 前进 前进 二月 HTML Javascript monthNames = [ "January", "February", "March", "April", "May", "June","July", "August", "September", "Octob
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>");
}
monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”];
d=新日期();
对于(i=0;i<12;i++){
d、 setMonth(d.getMonth()-1);
monthName=monthNames[d.getMonth()];
$('#test').append(monthNames[d.getMonth()]+“
”;
}
我做错了什么?不错!花了我一段时间 原因是今天是29号。由于日期对象被隐式设置为当前日期,并且2013年2月只有28天,因此可以看到3月打印了两次。通过设置可选的
day
参数来解决此问题:
d.setMonth(d.getMonth() - 1, 1);
那是因为今天正好是29日,当你到了2月29日,它将结束到3月 将日期设置为1日(或小于29日的任何其他日期),则该日期适用于所有月份:
d = new Date();
d.setDate(1);
d.setMonth(d.getMonth() - 1);
演示:试试这个:
monthNames=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”];
m=(新日期()).getMonth();
对于(变量i=0;i<12;i++){
$('#test')。追加(monthNames[(m-i+11)%12]+“
”;
}
我认为没有任何理由在每次迭代中都使用Date对象。一旦我们知道了当前月份,我们所需要做的就是向后迭代列表,并在末尾环绕。这是%
的工作。不幸的是,%
不执行真正的数学mod
操作,并且可能返回负值,因此最简单的实现方法是通过向该值添加额外的12来确保该值为正值:
var month = new Date().getMonth();
for (i = 1; i <= 12; i++) {
$('#test').append(monthNames[(12 + month - i) % 12] + "<br>");
}
var month=new Date().getMonth();
对于(i=1;i)典型的日期问题:您可以使用更简单的一个:m=d.getMonth()-2;对于(i=0;i<12;i++)$('#test')。附加(monthNames[(12+m-i)%12]+“
”;
monthNames = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
m = (new Date()).getMonth();
for (var i = 0; i < 12; i++) {
$('#test').append(monthNames[(m-i+11)%12] + "<br>");
}
var month = new Date().getMonth();
for (i = 1; i <= 12; i++) {
$('#test').append(monthNames[(12 + month - i) % 12] + "<br>");
}