1

我有这个代码,用户输入开始日期,然后它会自动添加结束日期。结束日期距开始日期 +3 天。问题是在 2 月之后,3 月 26 日至 31 日,因此输出错误的结束日期。它总是从 26-31 输出错误的结束日期。我认为问题是闰年,但我不知道如何解决它。请帮我。

这是代码:

<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>
4

2 回答 2

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
于 2013-02-18T09:17:09.663 回答
1

这是因为.setDate()在您的代码中应用了今天的日期,因此无法正常工作。在开始进行日期计算之前,两个日期需要彼此相等。

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

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

这也适用于闰秒之类的东西。

于 2013-02-18T09:25:16.237 回答