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 相关文章推荐
基于jquery的图片懒加载js
Jun 30 Javascript
javascript之bind使用介绍
Oct 09 Javascript
Extjs中ComboBox加载并赋初值的实现方法
Mar 22 Javascript
jQuery动画效果animate和scrollTop结合使用实例
Apr 02 Javascript
jquery实现九宫格大转盘抽奖
Nov 13 Javascript
jQuery防止重复绑定事件的解决方法
May 14 Javascript
js自调用匿名函数的三种写法(推荐)
Aug 19 Javascript
JS查找字符串中出现最多的字符及个数统计
Feb 04 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
Mar 02 Javascript
Vue下路由History模式打包后页面空白的解决方法
Jun 29 Javascript
vue1.0和vue2.0的watch监听事件写法详解
Sep 11 Javascript
Javascript原型链及instanceof原理详解
May 25 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
PHP网站基础优化方法小结
2008/09/29 PHP
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
thinkPHP简单遍历数组方法分析
2016/05/16 PHP
使用laravel和ECharts实现折线图效果的例子
2019/10/09 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
js截取字符串的两种方法及区别详解
2013/11/05 Javascript
自定义Angular指令与jQuery实现的Bootstrap风格数据双向绑定的单选与多选下拉框
2015/12/12 Javascript
原生js实现日期计算器功能
2017/02/17 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
原生JS实现前端本地文件上传
2018/09/08 Javascript
关于单文件组件.vue的使用
2018/09/20 Javascript
Vue源码解析之数组变异的实现
2018/12/04 Javascript
微信小程序制作表格的方法
2019/02/14 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
解决vue+router路由跳转不起作用的一项原因
2020/07/19 Javascript
python获取当前日期和时间的方法
2015/04/30 Python
浅谈Python中列表生成式和生成器的区别
2015/08/03 Python
Python实现的下载网页源码功能示例
2017/06/13 Python
Python实现购物程序思路及代码
2017/07/24 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
python 运用Django 开发后台接口的实例
2018/12/11 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
python PIL/cv2/base64相互转换实例
2020/01/09 Python
Python如何把多个PDF文件合并代码实例
2020/02/13 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
经典c++面试题二
2015/08/14 面试题
汽车专业毕业生自荐信
2013/11/03 职场文书
大学本科毕业生求职信范文
2013/12/18 职场文书
单位创先争优活动方案
2014/01/26 职场文书
合作协议书
2014/04/23 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书