javascript实现日期按月份加减


Posted in Javascript onMay 15, 2015

项目中需要用到,自己写了一个。javascript日期按月加减

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta charset="utf-8">
  <title></title>
  <script>
    function dateToDate(date) {
      var sDate = new Date();
      if (typeof date == 'object'
        && typeof new Date().getMonth == "function"
        ) {
        sDate = date;
      }
      else if (typeof date == "string") {
        var arr = date.split('-')
        if (arr.length == 3) {
          sDate = new Date(arr[0] + '-' + arr[1] + '-' + arr[2]);
        }
      }

      return sDate;
    }


    function addMonth(date, num) {
      num = parseInt(num);
      var sDate = dateToDate(date);

      var sYear = sDate.getFullYear();
      var sMonth = sDate.getMonth() + 1;
      var sDay = sDate.getDate();

      var eYear = sYear;
      var eMonth = sMonth + num;
      var eDay = sDay;
      while (eMonth > 12) {
        eYear++;
        eMonth -= 12;
      }

      var eDate = new Date(eYear, eMonth - 1, eDay);

      while (eDate.getMonth() != eMonth - 1) {
        eDay--;
        eDate = new Date(eYear, eMonth - 1, eDay);
      }

      return eDate;
    }

    function calcDate() {
      var d = document.getElementById('date').value;
      var n = document.getElementById('num').value;
      var eDate = addMonth(d, n);
      document.getElementById('result').innerHTML = eDate.getFullYear() + '-' + (eDate.getMonth() + 1) + '-' + eDate.getDate();
    }
  </script>
</head>
<body>
  <input type="date" id="date" />
  <input type="number" id="num" value="1" />
  <input type="button" value="计算" onclick="calcDate()" />
  <div id="result"></div>
</body>
</html>

方法二:

<script language="javascript">
Date.prototype.Format = function(fmt) 
{
//代码作者: meizz 
var o =
{ 
"M+" : this.getMonth() + 1, //月份 
"d+" : this.getDate(), //日 
"h+" : this.getHours(), //小时 
"m+" : this.getMinutes(), //分 
"s+" : this.getSeconds(), //秒 
"q+" : Math.floor((this.getMonth() + 3) / 3), //季度 
"S" : this.getMilliseconds() //毫秒 
}; 
if (/(y+)/.test(fmt)) 
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 
for (var k in o) 
if (new RegExp("(" + k + ")").test(fmt)) 
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 
return fmt; 
}
Date.prototype.addDays = function(d)
{
this.setDate(this.getDate() + d);
};
Date.prototype.addWeeks = function(w)
{
this.addDays(w * 7);
};
Date.prototype.addMonths= function(m)
{
var d = this.getDate();
this.setMonth(this.getMonth() + m);
if (this.getDate() < d)
this.setDate(0);
};
Date.prototype.addYears = function(y)
{
var m = this.getMonth();
this.setFullYear(this.getFullYear() + y);
if (m < this.getMonth()) 
{
this.setDate(0);
}
};
</script>

方法三:

<script> 
function  DateAdd(interval,number,date) 
{ 
/* 
 *---------------  DateAdd(interval,number,date)  ----------------- 
 *  DateAdd(interval,number,date)  
 *  功能:实现VBScript的DateAdd功能. 
 *  参数:interval,字符串表达式,表示要添加的时间间隔. 
 *  参数:number,数值表达式,表示要添加的时间间隔的个数. 
 *  参数:date,时间对象. 
 *  返回:新的时间对象. 
 *  var  now  =  new  Date(); 
 *  var  newDate  =  DateAdd( "d ",5,now); 
 *  author:wanghr100(灰豆宝宝.net) 
 *  update:2004-5-28  11:46 
 *---------------  DateAdd(interval,number,date)  ----------------- 
 */ 
    switch(interval) 
    { 
        case  "y "  :  { 
            date.setFullYear(date.getFullYear()+number); 
            return  date; 
            break; 
        } 
        case  "q "  :  { 
            date.setMonth(date.getMonth()+number*3); 
            return  date; 
            break; 
        } 
        case  "m "  :  { 
            date.setMonth(date.getMonth()+number);
            return  date; 
            break; 
        } 
        case  "w "  :  { 
            date.setDate(date.getDate()+number*7);
            return  date; 
            break; 
        } 
        case  "d "  :  { 
            date.setDate(date.getDate()+number); 
            return  date; 
            break; 
        } 
        case  "h "  :  { 
            date.setHours(date.getHours()+number);
            return  date; 
            break; 
        } 
        case  "m "  :  { 
            date.setMinutes(date.getMinutes()+number); 
            return  date; 
            break; 
        } 
        case  "s "  :  { 
            date.setSeconds(date.getSeconds()+number); 
            return  date; 
            break; 
        } 
        default  :  { 
            date.setDate(d.getDate()+number); 
            return  date; 
            break; 
        } 
    } 
}
var  now  =  new  Date(); 
//加五天. 
var  newDate  =  DateAdd( "d ",5,now); 
alert(newDate.toLocaleDateString()) 
//加两个月. 
newDate  =  DateAdd( "m ",2,now); 
alert(newDate.toLocaleDateString()) 
//加一年 
newDate  =  DateAdd( "y ",1,now); 
alert(newDate.toLocaleDateString()) 
</script>

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
关于JavaScript中string 的replace
Apr 12 Javascript
jquery实现加载等待效果示例
Sep 25 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
Aug 17 Javascript
JavaScript File API实现文件上传预览
Feb 02 Javascript
Jquery操作cookie记住用户名
Mar 29 Javascript
jstree的简单实例
Dec 01 Javascript
微信小程序学习(4)-系统配置app.json详解
Jan 12 Javascript
webpack3+React 的配置全解
Aug 21 Javascript
vue实现word,pdf文件的导出功能
Jul 31 Javascript
详解jQuery设置内容和属性
Apr 11 jQuery
node获取客户端ip功能简单示例
Aug 24 Javascript
JS对日期操作封装代码实例
Nov 08 Javascript
Javascript递归打印Document层次关系实例分析
May 15 #Javascript
Javascript节点关系实例分析
May 15 #Javascript
自己编写的支持Ajax验证的JS表单验证插件
May 15 #Javascript
Javascript中prototype属性实现给内置对象添加新的方法
May 14 #Javascript
Javascript进制转换实例分析
May 14 #Javascript
Javascript中For In语句用法实例
May 14 #Javascript
Javascript中With语句用法实例
May 14 #Javascript
You might like
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
php若干单维数组遍历方法的比较
2011/09/20 PHP
php 伪静态之IIS篇
2014/06/02 PHP
PHP采用get获取url汉字出现乱码的解决方法
2014/11/13 PHP
简单的pgsql pdo php操作类实现代码
2016/08/25 PHP
php加密解密字符串示例
2016/10/13 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
2014/12/12 Javascript
浅谈javascript的调试
2015/01/28 Javascript
使用Node.js处理前端代码文件的编码问题
2016/02/16 Javascript
javascript实现抽奖程序的简单实例
2016/06/07 Javascript
JavaScript的this关键字的理解
2016/06/18 Javascript
JS中如何实现点击a标签返回页面顶部的问题
2017/01/19 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
2018/05/24 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
python GUI框架pyqt5 对图片进行流式布局的方法(瀑布流flowlayout)
2020/03/12 Python
Python使用jpype模块调用jar包过程解析
2020/07/29 Python
《会变的花树叶》教学反思
2014/02/10 职场文书
踏青活动策划方案
2014/08/19 职场文书
新颖的化妆品活动方案
2014/08/21 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
2014会计年终工作总结
2014/12/20 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
政协工作总结2015
2015/05/20 职场文书
亮剑观后感500字
2015/06/05 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js