注意事项:

首先先将日期转换成

yyyy-mm-dd

的格式,例如:2025-01-24
然后进行类的转换

let date1 = new date("2025-01-24");
let date1 = new date("2025-01-25");

调用函数时可以转换类型

let youstr = getDaynum(date1, date2).toString();//字符串
let younum = getDaynum(date1, date2).toNumber();//数字

然后调用如下代码: 

计算天数(包含开始天和结束天):

//获取两个date类型数据的天数,包括结束时间和开始时间
        function getDaynum(date1, date2) {
            let timeDifference = date2 - date1;

            // 将毫秒转换为天数(1天 = 24小时 * 60分钟 * 60秒 * 1000毫秒)
            let daysBetween = Math.floor(timeDifference / (1000 * 60 * 60 * 24)); // 使用Math.ceil包含结束日期
            daysBetween += 1;
            return new BigNumber(daysBetween); 
        }

计算月数(包含开始月和结束月):


        //获取两个date类型数据的月数,包括结束时间和开始时间
        function getMonthsnum(date1, date2) { 

            // 提取年份和月份
            let year1 = date1.getFullYear();
            let month1 = date1.getMonth(); // 注意:getMonth() 返回的月份是从0开始的(0-11)
            let year2 = date2.getFullYear();
            let month2 = date2.getMonth();

            // 计算年份差和月份差
            let yearsBetween = year2 - year1;
            let monthsBetween = month2 - month1;

            // 如果结束日期的月份小于开始日期的月份,则需要从年份差中借一年(12个月)
            if (monthsBetween < 0) {
                yearsBetween--;
                monthsBetween += 12;
            }

            // 由于我们要求包含这两个月,所以不需要对月份差进行任何舍入
            // 只需要确保加上年份差带来的完整月份数
            let totalMonths = yearsBetween * 12 + monthsBetween + 1; // 加1是因为包含结束月份

            return new BigNumber(totalMonths);
        }

计算年数(包含开始年和结束年):

        //获取两个date类型数据的年数,包括结束时间和开始时间
        function getYearsnum(date1, date2) {

            // 提取年份和月份
            let year1 = date1.getFullYear(); 
            let year2 = date2.getFullYear();  
            let yearss = year2 - year1 + 1;

            return new BigNumber(totalMonths);
        }

返回类型的说明:

由于用JavaScript计算的时候会出现

这种情况,所以我用了bignumber.js的高精度库

具体使用方式网上搜

这里给个我下载的链接

bignumber.js: bignumber.js 用于任意精度十进制和非十进制运算的 JavaScript 库 (gitee.com)

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐