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 相关文章推荐
js活用事件触发对象动作
Aug 10 Javascript
js图片实时加载提供网页打开速度
Sep 11 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
Mar 16 Javascript
JavaScript学习笔记之创建对象
Mar 25 Javascript
jQuery实现简单滚动动画效果
Apr 07 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
Aug 29 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
Sep 29 Javascript
jquery.picsign图片标注组件实例详解
Feb 02 jQuery
AngularJS创建一个上传照片的指令实例代码
Feb 24 Javascript
Vue中用props给data赋初始值遇到的问题解决
Nov 27 Javascript
详解Node.js amqplib 连接 Rabbit MQ最佳实践
Jan 24 Javascript
vue3中轻松实现switch功能组件的全过程
Jan 07 Vue.js
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
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
简单了解WordPress开发中update_option()函数的用法
2016/01/11 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
JS 对象介绍
2010/01/20 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
2016/10/18 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
python 捕获shell脚本的输出结果实例
2017/01/04 Python
python对象与json相互转换的方法
2019/05/07 Python
python快速编写单行注释多行注释的方法
2019/07/31 Python
Python命令行click参数用法解析
2019/12/19 Python
pycharm激活码有效到2020年11月底
2020/09/18 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
python多线程和多进程关系详解
2020/12/14 Python
舞会礼服和舞会鞋:PromGirl
2019/04/22 全球购物
工程业务员工作职责
2013/12/07 职场文书
酒店拾金不昧表扬信
2014/01/18 职场文书
小学一年级学生评语
2014/04/22 职场文书
教师党的群众路线教育实践活动个人整改措施
2014/11/04 职场文书
检讨书范文2000字
2015/01/28 职场文书
2015年质量月活动总结报告
2015/03/27 职场文书
公司承诺书格式范文
2015/04/28 职场文书
检察院起诉意见书
2015/05/20 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA