使用JavaScript显示日期+3个月

Display date + 3 months using JavaScript?

本文关键字:个月 日期 显示 JavaScript 使用      更新时间:2023-09-26

我继承了一个表单,该表单有一些现有的JavaScript,可以创建一个新的日期+3个月后的日期。

var monthAway = new Date(new Date);
var day =monthAway.getDate();
var month =monthAway.getMonth() + 3;
var year =monthAway.getFullYear();
$('#Date_for_Second_Store_Access_to_Expire').val(day + "/" + month + "/" + year);
<p><input id="Date_for_Second_Store_Access_to_Expire" type="hidden" name="Date_for_Second_Store_Access_to_Expire" class="required" /></p>

问题是,如果今天的日期是10月、11月或12月,则新的日期月份将是13、14或15,而不是更新为1、2或3,然后更新年份,例如2014年11月5日是2014年5月14日,而不是2015年2月5日。

有什么想法吗?

试试这个:

    var x = 3; //or whatever offset
var CurrentDate = new Date();
CurrentDate.setMonth(CurrentDate.getMonth() + x);
alert(CurrentDate);

使用setMonth方法向monthAway变量添加3个月,如下所示

monthAway.setMonth(monthAway.getMonth() + 3);

则简单地使用修改后的CCD_ 2来显示到期日期。请注意,getMonth()方法将返回0-11,其中0是一月,1是二月,11是12月,所以你需要这样做来显示正确的月份

var month = monthAway.getMonth() + 1;

这是完整的修改代码,假设代码今天执行(5/11/2014),则#Date_for_Second_Store_Access_to_Expire的值将为5/2/2015

var monthAway = new Date(new Date);
monthAway.setMonth(monthAway.getMonth() + 3); // add 3 months to monthAway
var day = monthAway.getDate();
var month = monthAway.getMonth() + 1; // add 1 because .getMonth returns zero based month
var year = monthAway.getFullYear();
$('#Date_for_Second_Store_Access_to_Expire').val(day + "/" + month + "/" + year);
<p><input id="Date_for_Second_Store_Access_to_Expire" type="hidden" name="Date_for_Second_Store_Access_to_Expire" class="required" /></p>

这是显示上述代码中day + "/" + month + "/" + year值的JSFiddle:http://jsfiddle.net/jwa6o6r2/

增加month变量时只需进行简单检查:

 var month = monthAway.getMonth() + 3;
 if(month > 12) //If it crosses 12, start from 1 again.
   month -= 12;

更改

var month = monthAway.getMonth() + 3;

var month = ((monthAway.getMonth() + 3) % 12) + 1;

((monthAway.getMonth() + 3) % 12)会给你一个从0到11的数字。既然你想要1-12,那就是+ 1的用武之地

对于年份问题,请尝试以下

var year = (month <= 3 ? monthAway.getFullYear() + 1 : monthAway.getFullYear());

这将检查月份是否小于或等于3,这只有在你结束后才可能。