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分页效果示例
Oct 11 Javascript
JavaScript AOP编程实例
Jun 16 Javascript
微信公众号 客服接口的开发实例详解
Sep 28 Javascript
微信小程序 缓存(本地缓存、异步缓存、同步缓存)详解
Jan 17 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
Jan 19 Javascript
ES6学习之变量的解构赋值
Feb 12 Javascript
JS实现DIV高度自适应窗口示例
Feb 16 Javascript
express框架实现基于Websocket建立的简易聊天室
Aug 10 Javascript
详解plotly.js 绘图库入门使用教程
Feb 23 Javascript
node中的cookie的具体使用
Sep 13 Javascript
React-redux实现小案例(todolist)的过程
Sep 29 Javascript
Vue实现剪切板图片压缩功能
Feb 04 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
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
PHP和C#可共用的可逆加密算法详解
2015/10/26 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
jQuery 树形结构的选择器
2010/02/15 Javascript
Javascript的一种模块模式
2010/09/08 Javascript
Javascript动态绑定事件的简单实现代码
2010/12/25 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
z-blog SyntaxHighlighter 长代码无法换行解决办法(jquery)
2014/11/16 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
JavaScript字符串对象
2017/01/14 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
原生js通过一行代码实现简易轮播图
2019/06/05 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
python算法学习之计数排序实例
2013/12/18 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
Python 多进程、多线程效率对比
2020/11/19 Python
实例教程 纯CSS3打造非常炫的加载动画效果
2014/11/05 HTML / CSS
Ticketmaster意大利:音乐会、节日、艺术和剧院的官方门票
2019/12/23 全球购物
会计自我鉴定
2013/11/02 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript
php双向队列实例讲解
2021/11/17 PHP
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android