javascript为给定日期添加天数
我有下面的javascript函数,应该在表单日期中添加一周,并将其存储在表单中,以便用户下次单击链接时使用javascript为给定日期添加天数,javascript,date,Javascript,Date,我有下面的javascript函数,应该在表单日期中添加一周,并将其存储在表单中,以便用户下次单击链接时使用 function changeDate() { var start = document.getElementById('start_date').value; var d = 7; var myDate=new Date(start); myDate.setDate(myDate.getDate()+parseInt(d)); document.
function changeDate()
{
var start = document.getElementById('start_date').value;
var d = 7;
var myDate=new Date(start);
myDate.setDate(myDate.getDate()+parseInt(d));
document.getElementById('start_date').value = (myDate.getFullYear()) + '-' + (myDate.getMonth()+1) + '-' + (myDate.getDate());
}
我的表格看起来像这样
<?php
$start_date = "2014-09-20";
?>
<form name="myForm" method="post">
<input type="text" name="start_date" id="start_date" value="<?php echo $start_date?>"/>
<a href="#" onclick="changeDate();">Next</a>
</form>
一个日期加上一周,简化为:
var oneWeekFromMyDate = new Date(myDate.getTime() + 7 * 24 * 60 * 60 * 1000);
不过,它不适用于闰秒、夏令时开关和其他日历干扰
编辑:至于您的解决方案,它实际上在我的计算机上运行没有问题:
函数changeDate()
{
var start=document.getElementById('start_date')。值;
var d=7;
var myDate=新日期(开始);
myDate.setDate(myDate.getDate()+parseInt(d));
document.getElementById('start_date')。value=(myDate.getFullYear())+'-'+(myDate.getMonth()+1)+'-'+(myDate.getDate());
}
您的问题是浏览器希望2014-09-27
安装2014-9-27
这将解决它:
function padNumber(num, length) {
var str = num + "";
while (str.length < length) {
str = "0" + str;
}
return str;
}
function changeDate()
{
var start = document.getElementById('start_date').value;
var d = 7;
var myDate=new Date(start);
myDate.setDate(myDate.getDate()+parseInt(d));
document.getElementById('start_date').value = (myDate.getFullYear()) + '-' + padNumber(myDate.getMonth()+1, 2) + '-' + padNumber(myDate.getDate(), 2);
}
功能焊盘编号(num,length){
var str=num+“”;
while(str.length
为日期添加天数的更好方法是:
function addDays(日期,天){
返回新日期(
date.getFullYear(),
date.getMonth(),
date.getDate()+天,
date.getHours(),
date.getMinutes(),
date.getSeconds()%60,
date.getmillizes());
}
更好的时间操作方法是。我尝试过使用毫秒,就像你的解决方案一样,用getTime代替getDate,仍然是同一个问题,成功直到月份改变,失败。我的意思是,如果我发出警报(myDate),var myDate返回“无效日期”因此,尝试使用Nan获取年、月或日失败如果您运行您的代码,它将成功,只要该月是11月,它将给出正确的日期12月1日,然后它将开始给出无效的日期,只需遍历该月,直到它更改,然后是“下一个”它将给出无效日期的时间可能是浏览器兼容性问题吗?上面的代码在我的Chrome上运行得很好,我从来没有得到“无效日期”。我用上面的代码进步了整整一年。哦,似乎是这样,当我在chrome上试用它时,它的工作原理就像你说的那样完美。我使用Safari进行测试。谢谢你的提示,因为它很简单,我没有意识到这可能是一个浏览器问题,我只是用新日期(“2014-9-27”)
运行了一个测试。Chrome和Node接受,Firefox和IE10不接受。