javascript实现日期按月份加减

项目中需要用到,自己写了一个。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>

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

(0)

相关推荐

  • js输出阴历、阳历、年份、月份、周示例代码

    复制代码 代码如下: <html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta content="Microsoft FrontPage 4.0"><meta content="FrontPage.Editor.Document"><style ty

  • JS获取月的最后一天与JS得到一个月份最大天数的实例代码

    <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>标题页</title> <script language="javascript"> function getLastDay(year,month) { var new_year = year; //取当前的年份 var new_month = month++;//取下一个月的第一天,方便计

  • JS动态生成年份和月份实例代码

    先看下js动态生成的年份,具体代码如下所示: function makeYear() { var year = document.getElementById("year"); var my = new Date(); var endYear = my.getFullYear();// 获取当前年份 for (var i = 1900; i <= endYear; i++) { year.options.add(new Option(i, i + '年')); } } 下面看下j

  • IE与Firefox下javascript getyear年份的兼容性写法

    IE与Firefox下javascript getyear年份不同浏览器 JavaScript 的getyear年份函数兼容性问题 先举个例子 用 Firefox 上一些网站会看到这样的提示 现在时间是 106年8月8日 而用 ie 浏览器的话就显示正常的 2006年8月8日 原因就是 javascript 的兼容性问题 var today = new date(); var year = today.getYear(); 在 Firefox 里面 getYear 返回的是 "当前年份-1900

  • JS获取月份最后天数、最大天数与某日周数的方法

    本文实例讲述了JS获取月份最后天数.最大天数与某日周数的方法.分享给大家供大家参考,具体如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>标题页</title> <script language="javascript"> function getLastDay(year,month) { var new_year = year; /

  • javaScript年份下拉列表框内容为当前年份及前后50年

    javascript下拉列表框,内容为当前年份及前后50年,默认选择为当前年份 复制代码 代码如下: <script language="javascript" type="text/javascript"> window.onload=function(){ //设置年份的选择 var myDate= new Date(); var startYear=myDate.getFullYear()-50;//起始年份 var endYear=myDate.

  • JS日期对象简单操作(获取当前年份、星期、时间)

    本文实例为大家分享了JavaScript获取当前年份.星期.时间的方法,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> </body> <script type="text/javascript"> //

  • 一个可以显示当前年份以及生肖的js代码

    function yeart(){ var now=new Date(); var year=now.getFullYear(); var ss=year-2008;//设定2008为初始年份 var ssc=ss%12; var ssyear=new Array("子鼠","丑牛","寅虎","卯兔","辰龙","巳蛇","午马","未羊",&q

  • javascript实现日期按月份加减

    项目中需要用到,自己写了一个.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 Da

  • Java对日期Date类进行加减运算、年份加减月份加减、时间差等等

    实现代码一: import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateTestUtil { public static void main(String[] args) throws Exception { SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); String str=&

  • 详解JavaScript中任意两数加减的解决方案

    目录 写在前面 分析填坑思路 解决整数加减的坑 转换科学计算 解决整数减法的坑 解决小数加法的坑 解决小数减法的坑 解决整数加小数的通用问题 总结 写在前面 本文是从初步解决到最终解决的思路,文章篇幅较长 虽然是一篇从0开始的文章,中间的思维跳跃可能比较大 代码的解析都在文章的思路分析和注释里,全文会帮助理解的几个关键词 1.Number.MAX_SAFE_INTEGER 和 Number.MIN_SAFE_INTEGER 2.15长度的字符串 3.padStart 和 padEnd 分析填坑思

  • PHP中的日期加减方法示例

    几乎所有从事程序开发的程序员都遇到时间处理问题,PHP开发也一样,幸运的是PHP提供了很多关于日期时间函数.只要经常使用这些函数,搭配使用,日期时间处理上就熟能生巧了. 今天要讲的这个例子,需求是这样的.得知某个日期时间, 如:2012-04-25 10:10:00 我要在这个日期时间的基础上加上5个月并返回处理后的日期 结果:2012-04-25 10:10:00 加5个月等于 2012-09-25 10:10:00 这个需求看似简单,但还是有点棘手,因为PHP没有直接提供yyyy-mm-dd

  • 数据库 日期加减处理

    在实际的处理中,还有一种比较另类的日期加减处理,就是在指定的日期中,加上(或者减去)多个日期部分,比如将2005年3月11日,加上1年3个月11天2小时.对于这种日期的加减处理,DATEADD函数的力量就显得有点不够. 要实现多个日期部分的加减处理,最主要的就是把要加减的日期字符分解,然后根据分解的结果在指定日期的对应日期部分加上相应的值,其难点在于如何分解日期字符,以及判断分解后的日期字符属于哪个日期部分.要顺利地分解出日期字符的话,首先要规定日期加减的日期字符的格式,可以这样定义: y-m-

  • Jmeter中的timeshift()函数获取当前时间进行加减

    __TimeShift(格式,日期,移位,语言环境,变量): 可对日期进行移位加减操作 格式 - 将显示创建日期的格式. 如果该值未被传递,则以毫秒为单位创建日期. 日期 - 这是日期值.用于如果要通过添加或减去特定天数,小时或分钟来创建特定日期的情况.如果参数值未通过,则使用当前日期. 移位 -表示要从日期参数的值中添加或减去多少天,几小时或几分钟.如果该值未被传递,则不会将任何值减去或添加到日期参数的值中.如下所述: “PT20.345S”解析为“20.345秒” “PT15M”解析为“15

  • js用Date对象的setDate()函数对日期进行加减操作

    想自己写一个日期的加减方法,但是涉及到每个月天数的判断,如果是2月份的话,还要涉及到闰年的判断,有些复杂,应用过程中总是出现问题,于是查了下资料,以在某个日期上加减天数来说,其实只要调用Date对象的setDate()函数就可以了,具体方法如下: function addDate(date,days){ var d=new Date(date); d.setDate(d.getDate()+days); var month=d.getMonth()+1; var day = d.getDate(

  • Java中常见的日期操作(取值、转换、加减、比较)

    Java 的开发过程中免不了与 Date 类型纠缠,准备总结一下项目经常使用的日期相关操作,JDK 版本 1.7,如果能够帮助大家节约那么几分钟起身活动一下,去泡杯咖啡,便是极好的,嘿嘿.当然,我只提供了可行的解决方案,并不保证是最佳实践,欢迎讨论. 1. 日期取值 在旧版本 JDK 的时代,有不少代码中日期取值利用了 java.util.Date 类,但是由于 Date 类不便于实现国际化,其实从 JDK1.1 开始,就更推荐使用 java.util.Calendar 类进行时间和日期方面的处

  • 浅谈javascript中的加减时间

    上午在处理一些js中的日期参数的时候遇到了一点问题,不晓得如何加减时间. 最初的想法是自己分别取出year,month,day,hour,minute,second,然后手动加...开始想直接来个借位符就好了,后来一想,哪有那么容易. 最后,经过一个上午的摸索,终于搞定了. 首先是怎么显示一个标准的日期时间格式   "yyyy-mm-dd hh:MM:ss",暂时做法是先 var dtNow=new Date().//当前时间 标准的日期时间就拼出来,dtNow.getFullYear

  • PHP常用日期加减计算方法实例小结

    本文实例总结了PHP常用日期加减计算方法.分享给大家供大家参考,具体如下: PHP 标准的日期格式 date("Y-m-d H:i:s"); PHP 简单的日期加减计算 <?php date_default_timezone_set('PRC'); //默认时区 echo "今天:",date("Y-m-d",time()),"\n"; echo "今天:",date("Y-m-d"

随机推荐