Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript为给定日期添加天数_Javascript_Date - Fatal编程技术网

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.

我有下面的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.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不接受。