得到不正确的日期,我使用的功能增加日期1个月,功能返回日期后
问题描述:
我已经做了一个函数,填写发票日期栏中的今天的日期自动填写html表单,然后填写发票日期前1个月到期日期栏自动生效,今天的日期正常,但截止日期正确显示日期提前1个月,直到提供虚假日期后的第10个月。第11个月显示明年第1个月,第12个月显示同年第13个月。 HTML表单代码使用javascript:得到不正确的日期,我使用的功能增加日期1个月,功能返回日期后
<div style="width:15%;float:left">
Invoice Date
<br>
<input style="width:98%;margin-left:1%;margin:right:1%" type="date" id="myDate" placeholder="Today's Date">
<script type="text/javascript">
function SetDate() {
var date = new Date();
var day = date.getDate();
var month = date.getMonth() + 1;
var year = date.getFullYear();
if (month < 10) month = "0" + month;
if (day < 10) day = "0" + day;
var today = day + "-" + month + "-" + year;
document.getElementById('myDate').value = today;
if (month < 13) {
month = parseInt(month) + 1;
}
if (month == 12) {
month = 13 - month;
year = year + 1
}
if (month < 10) {
month = "0" + month;
}
if (day < 10) day = "0" + day;
var due = day + "-" + month + "-" + year;
document.getElementById('duedate').value = due;
}
</script>
</div>
<div style="width:15%;float:left">
Due Date
<br>
<input style="width:98%;margin-left:1%;margin:right:1%" type="date" id="duedate" placeholder="Due date">
</div>
答
javascript日期的API已经知道如何通过几个月的增量或数天,或数年调整日期。如果将日期实例的一部分设置为“溢出”值,则会得到一个合理的日期。因此,一个月显示日期另一个日期之后,只需添加一个到一个月值—不需要自己做任何其他调整:
function SetDate() {
var date = new Date();
function fmtDate(date) {
var day = date.getDate();
var month = date.getMonth() + 1;
var year = date.getFullYear();
if (month < 10) month = "0" + month;
if (day < 10) day = "0" + day;
return day + "-" + month + "-" + year;
}
document.getElementById('myDate').value = fmtDate(date);
date.setMonth(date.getMonth() + 1);
document.getElementById('duedate').value = fmtDate(date);
}
你不必这样做,在所有的工作。如果您将JavaScript日期实例的月份设置为12,则它已经理解您的意思是明年的一月份,并且会为您调整所有内容。 – Pointy