首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用JavaScript确定一个月的天数的最佳方法是什么?

使用JavaScript确定一个月的天数的最佳方法是什么?
EN

Stack Overflow用户
提问于 2008-11-25 06:41:05
回答 15查看 28.9K关注 0票数 122

我一直在使用这个函数,但我想知道获取它的最有效和准确的方法是什么。

代码语言:javascript
复制
function daysInMonth(iMonth, iYear) {
   return 32 - new Date(iYear, iMonth, 32).getDate();
}
EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2008-11-24 22:44:30

代码语言:javascript
复制
function daysInMonth (month, year) { // Use 1 for January, 2 for February, etc.
  return new Date(year, month, 0).getDate();
}

console.log(daysInMonth(2, 1999)); // February in a non-leap year.
console.log(daysInMonth(2, 2000)); // February in a leap year.

第0天是上个月的最后一天。因为month构造函数是从0开始的,所以它工作得很好。这是一个小技巧,但这基本上就是你减去32的结果。

更多信息请访问:Number of days in the current month

票数 225
EN

Stack Overflow用户

发布于 2011-03-29 19:44:50

如果您经常调用此函数,则缓存该值以获得更好的性能可能很有用。

以下是FlySwat's answer的缓存版本

代码语言:javascript
复制
var daysInMonth = (function() {
    var cache = {};
    return function(month, year) {
        var entry = year + '-' + month;

        if (cache[entry]) return cache[entry];

        return cache[entry] = new Date(year, month, 0).getDate();
    }
})();
票数 7
EN

Stack Overflow用户

发布于 2015-07-14 18:10:59

为了消除混淆,我可能会将月份字符串设置为基于,因为它当前是从0开始的。

代码语言:javascript
复制
function daysInMonth(month,year) {
    monthNum =  new Date(Date.parse(month +" 1,"+year)).getMonth()+1
    return new Date(year, monthNum, 0).getDate();
}

daysInMonth('feb', 2015)
//28

daysInMonth('feb', 2008)
//29
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/315760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档