计算给定日期增加自然月后的日期

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/70247257 该代码函数实现的功能是,在给定日期的基础上增加固定月份后的日期,注意增加的是自然月。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/70247257

该代码函数实现的功能是,在给定日期的基础上增加固定月份后的日期,注意增加的是自然月。
例如:
2001-01-28、2001-01-29、2001-01-30、2001-01-31 增加一个月后,得到的结果都应该是 2001-02-28

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>增加月份</title>
</head>
<body>
    <script language='javascript' charset='gb2312'>
        /**
         * 计算给定日期增加N个自然月后的日期
         *
         * @param dtstr    给定日期,格式 2016-01-30
         * @param n    需要增加的月数
         * @returns
         */
        function addmulMonth(dtstr, n) { // n个月后
            var s = dtstr.split("-");
            var yy = parseInt(s[0]);
            var mm = parseInt(s[1] - 1);
            var dd = parseInt(s[2]);
            var dt = new Date(yy, mm, dd);
            dt.setMonth(dt.getMonth() + n);
            if ((dt.getFullYear() * 12 + dt.getMonth()) > (yy * 12 + mm + n)) {
                dt = new Date(dt.getFullYear(), dt.getMonth(), 0);
            }
            var year = dt.getFullYear();
            var month = dt.getMonth() + 1;
            var days = dt.getDate();
            var dd = year + "-" + month + "-" + days;
            return dd;
        }
        // 下面是测试代码
        document.write("2000-1-31 增加1个月后的日期为:" + addmulMonth("2000-1-31", 1)
                + "<br/>");// 加一个月
        document.write("2000-2-29 增加12个月后的日期为:" + addmulMonth("2000-2-29", 12)
                + "<br/>");// 加一年
        document.write("2000-1-31 增加3个月后的日期为:" + addmulMonth("2000-1-31", 3)
                + "<br/>");// 加一季度
        document.write("2000-2-29 增加6个月后的日期为:" + addmulMonth("2000-2-29", 6)
                + "<br/>");// 加半年
        document.write("2000-2-29 增加9个月后的日期为:" + addmulMonth("2000-2-29", 9)
                + "<br/>");// 加三个季度
        /**
         * 基于今天为基准,计算增加或减少指定天数后的日期
         *
         * @param addDayCount    增加或减少的天数(正数或负数)
         * @returns    计算后的日期
         */
        function getDateStr(addDayCount) {
            var dd = new Date();
            dd.setDate(dd.getDate() + addDayCount);// 获取addDayCount天后的日期
            var y = dd.getFullYear();
            var m = dd.getMonth() + 1;// 获取当前月份的日期
            var d = dd.getDate();
            return y + "-" + m + "-" + d;
        }
        document.write("前天:" + getDateStr(-2));
        document.write("<br />昨天:" + getDateStr(-1));
        document.write("<br />今天:" + getDateStr(0));
        document.write("<br />明天:" + getDateStr(1));
        document.write("<br />后天:" + getDateStr(2));
        document.write("<br />大后天:" + getDateStr(3));
    </script>
</body>
</html>
目录
相关文章
|
Java 开发工具 数据安全/隐私保护
技术博客:市面上加密混淆软件的比较和推荐
技术博客:市面上加密混淆软件的比较和推荐
429 0
|
缓存 前端开发 JavaScript
Vue项目打包部署Nginx配置及前端缓存问题解决
Vue项目打包部署Nginx配置及前端缓存问题解决
2205 0
Vue项目打包部署Nginx配置及前端缓存问题解决
|
Java 调度 Spring
SpringBoot实现多线程定时任务动态定时任务配置文件配置定时任务
SpringBoot实现多线程定时任务动态定时任务配置文件配置定时任务
1435 0
|
6月前
|
数据采集 API
京东:调用用户行为API分析购买路径,优化页面跳转逻辑
京东通过整合用户行为API,构建购买路径分析体系,运用马尔可夫链模型识别高损耗、断裂与冗余路径,优化页面跳转逻辑。实施流程合并、预加载及实时干预策略,转化率提升30.2%,路径缩短34.9%,跳转失败率下降78.7%,实现数据驱动的精细化运营。
473 0
|
机器学习/深度学习 人工智能 云计算
2025年2月阿里云服务器价格与选购指南
随着云计算技术的普及,阿里云在2025年推出了多款高性价比的云服务器产品。本文基于《2025年阿里云服务器收费价格表》,从配置选择、适用场景到优惠活动,为您提供全面的购买参考。涵盖入门级轻量应用服务器、经济型e实例、企业级通用算力型u1实例、高性能服务器及GPU服务器等,适合个人开发者到大型企业的不同需求。详细对比各类配置的价格与性能,并提供抢购秒杀、续费优惠及代金券组合使用等省钱策略,助您降低上云成本。立即访问云小站活动页面领取最新折扣,开启高效云端之旅!
|
弹性计算 安全 Ubuntu
从零开始搭建WebGIS网站(一)-云服务器准备
WebGIS网站系列连载第一篇,记录一下阿里云服务器的准备环节。
367 56
|
缓存 NoSQL Redis
如何在Python中使用Redis或Memcached进行缓存?
如何在Python中使用Redis或Memcached进行缓存?
336 2
|
前端开发 开发工具 Android开发
【服务器APP】利用HBuilder X把网页打包成APP
【服务器APP】利用HBuilder X把网页打包成APP
698 0