gpt4 book ai didi

javascript 将天数添加到给定日期

转载 作者:行者123 更新时间:2023-12-02 16:56:54 25 4
gpt4 key购买 nike

我有以下 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>

每次用户单击超链接“下一步”时,该脚本都会正常工作,增加一周,问题发生在月份边界上。当日期为“2014-09-27”时,脚本会正确计算下一个日期并显示“2014-10-04”。一旦下次脚本失败时月份发生变化,下次单击时就会出现问题。我不明白为什么,我尝试提醒 start_date 并且它是正确的“2014-10-04”,但是一旦执行新的 Date 命令,它会返回无效日期。

奇怪的是,它不会在月份边界上失败(这实际上是正确计算的),但下次会失败。我认为这可能与当前月份有关,但没关系,如果我从 start_date 设置为“2014-11-03”开始,它将继续正确添加,直到我显示日期“2014-12-01”,但是下次就会失败。

非常感谢任何帮助

最佳答案

您的问题是浏览器需要 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);
}

向日期添加天数的更好方法是:

function addDays(日期, 天) {
返回新日期(
日期.getFullYear(),
日期.getMonth(),
date.getDate() + 天,
日期.getHours(),
日期.getMinutes(),
日期.getSeconds() % 60,
日期.getMilliseconds());
}

更好的时间操作方法是 http://momentjs.com/ .

关于javascript 将天数添加到给定日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26094639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com