JavaScript(JS)计算某年某月的天数(月末)

方法1

复制代码
/**
 * 获取某年月的天数
 * @param year 年
 * @param month 月(0-11)
 * @returns {number} 天数
 */
var getDaysOfMonth = function (year, month) {
    month = month + 1;
    switch (month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            return 31;
        case 4:
        case 6:
        case 9:
        case 11:
            return 30;
        case 2:
            return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ? 29 : 28;
        default:
            return 0;
    }
};
复制代码

 

方法2

复制代码
/**
 * 获取某年月的天数
 * @param year 年
 * @param month 月(0-11)
 * @returns {number} 天数
 */
var getDaysOfMonth2 = function (year, month) {
    month++;
    if (month > 11) {
        month = 0, year++;
    }
    return new Date(new Date(year, month, 1).getTime() - 1000 * 3600 * 24).getDate();
};
复制代码

 

 

经过测试第一个方法效率明显高出不少。

测试代码

复制代码
var testCostTime = function (method) {
             var d1 = new Date();
             if(method==1){
                 for(var i=0;i<100000;i++){
                     getDaysOfMonth(2017,1);
                 }
             }else{
                 for(var i=0;i<100000;i++){
                     getDaysOfMonth2(2017,1);
                 }
             }
             console.log('cost time:'+(new Date().getTime()-d1.getTime()));
         }
复制代码
<input type="button" value="测试1" onclick="testCostTime(1)"/>
 <input type="button" value="测试2" onclick="testCostTime(2)"/>

进行10万次调用测试后,方法1耗时为0-1毫秒,方法2耗时为38-41毫秒。所以建议使用方法一,进行计算年月的天数。

posted @   追极  阅读(2937)  评论(0编辑  收藏  举报
编辑推荐:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示