JavaScript:打印前 12 个月 - “March”打印两次
JavaScript: Print previous 12 months -- "March" prints twice?
我正在尝试编写一个打印前 12 个月名称的脚本。由于本月是 1 月,因此应打印:12 月十一月十月九月八月七月六月五月四月三月二月一月
相反,它打印三月两次。 http://jsfiddle.net/h69gm04g/2/
十一月十月九月八月七月六月五月四月三月三月二月
.HTML
<div id="test"></div>
爪哇语
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>");
}
我做错了什么?
不错的一个!花了我一段时间。
原因是今天是29日。由于日期对象隐式设置为当前日期,并且 2013 年 2 月只有 28 天,因此您会看到 3 月打印了两次。通过设置可选的 day
参数来解决此问题:
d.setMonth(d.getMonth() - 1, 1);
那是因为今天恰好是 29 日,当你到达 2 月 29 日时,它将结束到 3 月。
将日期设置为 1st(或任何其他小于 29 的日期),然后它适用于所有月份:
d = new Date();
d.setDate(1);
d.setMonth(d.getMonth() - 1);
演示:http://jsfiddle.net/h69gm04g/3/
我认为没有任何
理由在每次迭代中操纵 Date 对象的答案。 一旦我们知道了当前月份,我们需要做的就是向后迭代列表,在最后环绕。 这是%
的工作. 不幸的是,%
不执行真正的数学mod
运算,并且可以返回负值,因此最简单的实现是通过向其添加额外的 12 来确保该值为正数:
var month = new Date().getMonth();
for (i = 1; i <= 12; i++) {
$('#test').append(monthNames[(12 + month - i) % 12] + "<br>");
}
(JSFiddle)
试试这个 http://jsfiddle.net/oLp9hegk/:
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>");
}
相关文章:
- Meteor Router数据函数被调用两次
- 从MySQL数据库中获取输入数据需要两次页面刷新
- Module.start()已激发两次
- Jquery点击事件必须点击两次
- Append元素在运行两次函数后不显示
- 防止双击执行两次jQuery post请求
- 我必须点击两次才能激活任何按钮操作(离子/角度)
- 单击jQuery会激发两次
- JavaScript:打印前 12 个月 - “March”打印两次
- 如何使用 LiveCycle Designer 在 PDF 中打印两次隐藏页面
- Node.js打印控制台输出两次
- XML节点打印两次
- 通过点击输入框两次它's正在打印它'输入框中有自己的html代码
- 通过Javascript打印hello两次
- 为什么我的Div只打印两次?
- 本机打印对话框触发两次,为iframe和页面在Internet explorer 11
- 在setInterval上打印两次的项
- Python / AJAX / JavaScript - 在GET期间打印两次HTML页面
- Jquery append - 打印两次相同的信息
- 是否可以通过在输入的数字前后添加不同的关键字来打印输入的数字两次