2014-11-05 56 views
0

我已经继承了一个表单,该表单有一些现有的JavaScript,从今天的日期开始创建一个新的日期+ 3个月。使用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> 

问题是,如果今天的日期是十月,十一月或十二月新日期月份将是13,14或15,而不是更新的1,2或3,然后更新年份,如5/11/2014是05/14/2014而非05/02/2015。

任何想法?

+0

你可以用“addMonths()”喜欢“变种一天的日期对象=新的日期()addMonths( 3);” – 2014-11-05 04:55:40

回答

1

使用setMonth method添加3个月至monthAway变量如下

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

然后简单地使用改性monthAway显示到期日期。请注意,getMonth() Method将返回0-11,其中0是一月,1是二月,...,11月,所以你需要这样做,以显示正确的月份

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/

+0

感谢您的支持!很高兴知道我离得很远 – user3445112 2014-11-06 00:49:45

0

增加month变量时,只要做一个简单的检查:

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

变化

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,如果你缠,因为这只会是可能的。

+0

这很好,谢谢。任何想法我如何也从2014年到2015年更新一年? – user3445112 2014-11-05 04:51:07

+0

@ user3445112查看我刚才提供的更新。 – David 2014-11-05 04:51:26

2

尝试这种情况:

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

+1不错,简单。 – 2014-11-05 04:49:14