计算一个月的最后一天

新手上路,请多包涵

如果您在 0 中提供 dayValue 作为 Date.setFullYear ,您将获得上个月的最后一天:

d = new Date(); d.setFullYear(2008, 11, 0); //  Sun Nov 30 2008

mozilla 中提到了这种行为。这是一个可靠的跨浏览器功能还是我应该看看其他方法?

原文由 Ken 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 691
2 个回答
 var month = 0; // January
 var d = new Date(2008, month + 1, 0);
 console.log(d.toString()); // last day in January
 IE 6: Thu Jan 31 00:00:00 CST 2008
 IE 7: Thu Jan 31 00:00:00 CST 2008
 IE 8: Beta 2: Thu Jan 31 00:00:00 CST 2008
 Opera 8.54: Thu, 31 Jan 2008 00:00:00 GMT-0600
 Opera 9.27: Thu, 31 Jan 2008 00:00:00 GMT-0600
 Opera 9.60: Thu Jan 31 2008 00:00:00 GMT-0600
 Firefox 2.0.0.17: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time)
 Firefox 3.0.3: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time)
 Google Chrome 0.2.149.30: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time)
 Safari for Windows 3.1.2: Thu Jan 31 2008 00:00:00 GMT-0600 (Canada Central Standard Time)

输出差异是由于 toString() 实现的差异,而不是因为日期不同。

当然,仅仅因为上面确定的浏览器使用 0 作为上个月的最后一天并不意味着它们会继续这样做,或者没有列出的浏览器会这样做,但它增加了人们相信它应该可以工作的可信度。在每个浏览器中都以相同的方式。

原文由 Grant Wagner 发布,翻译遵循 CC BY-SA 4.0 许可协议

我发现这对我来说是最好的解决方案。让 Date 对象为您计算。

 var today = new Date();
var lastDayOfMonth = new Date(today.getFullYear(), today.getMonth()+1, 0);

将 day 参数设置为 0 意味着比该月的第一天少一天,即上个月的最后一天。

原文由 orad 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题