我有这个代码,用户输入开始日期,然后它会自动添加结束日期。结束日期为开始日期的+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>
答案 0 :(得分: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
答案 1 :(得分:1)
这是因为.setDate()
在您的代码中应用于今天的日期,因此无法正常运行。在开始进行日期计算之前,两个日期需要相等。
var old = new Date(Date.parse(startdate.value)),
newdate = old;
newdate.setDate(old.getDate() + 3);
这对于像闰秒这样的东西也可以。