2013-02-18 78 views
1

我有这样的代码在用户输入开始日期,然后它会自动添加结束日期。结束日期为开始日期的+3天。问题在二月,三月26-31之后,所以输出错误的结束日期。它始终输出错误的结束日期从26-31。我认为问题是闰年,但我不知道如何解决。请帮帮我。JavaScript的日期(闰年)

这是代码:

<input type="date" name="start_date" id="start" onKeyUp="date()"> 
<input type="text" name="end_date" id = "end" onKeyUp="date()" disabled /> 
     <script type = "text/javascript"> 
function date() { 
var startdate = document.getElementById('start'); 
var enddate = document.getElementById('end'); 
//conver you selected stuff to a proper date format 
var old = new Date(Date.parse(startdate.value)); 
//take a new date 
var newdate=new Date(Date.parse(startdate.value)+24*60*60*1000*3); 
// add how many days you want to add i use 3 you can use as many 
newdate.setDate(old.getDate()+3); 
enddate.value = (newdate.getMonth()+1)+'-'+newdate.getDate()+'-'+newdate.getFullYear(); 
} 
</script> 

回答

1

这是因为今天的代码中的最新应用.setDate(),这样就不能正常工作。在开始进行日期计算之前,两个日期都需要相等。

var old = new Date(Date.parse(startdate.value)), 
newdate = old; 

newdate.setDate(old.getDate() + 3); 

这对于像闰秒这样的东西也可以正常工作。

+0

好吧,先生,我会试试这个。谢谢 – arukiri123 2013-02-18 09:41:56

+0

哦。现在正在工作的先生。谢谢 – arukiri123 2013-02-18 09:43:34

2

尝试

var newdate=new Date(Date.parse(startdate.value)+24*60*60*1000*3); 

代替在所述getDate()结果直接操纵。

编辑

说明有关数量:

24   * 60    * 60     * 1000     * 3 
//hours per day minutes per hour seconds per minute milliseconds per second 3 days 
+0

流有一个问题,当我选择二月28,2013。它给了我3/29/2013的结束日期。如何解决这个问题? – arukiri123 2013-02-18 09:20:19

+0

天不总是86400秒。 – 2013-02-18 09:32:15

+0

@ arukiri123这不是一个正确的结果吗? – Passerby 2013-02-18 09:33:26