我正在尝试使用此代码向给定日期添加任意天数
$("body").change(".editField", function() {
var startDate = new Date(Date.now());
var addedDays = $("#daysAdded").val();
var calculatedDate = addDays(startDate, addedDays);
console.log(addedDays);
console.log(calculatedDate)
$("#dayResult").val(calculatedDate.toISOString().split("T")[0]);
});
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
};
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<input type='number' id='daysAdded' class='editField'>
<input type='text' id='dayResult'>
JSFiddle 链接:https://jsfiddle.net/gv4qswjf/
问题 - 无论您输入什么开始日期:
- 只要添加 1,计算出的日期就会跳转到不同的年份 (以我为例,2020 年 3 月)。
- 然后它可以正常工作一段时间......
- 一旦添加 10,计算出的日期就会跳转到 2027 年。
- 然后它可以正常工作一段时间......
- 只要添加 100,计算的日期就会跳转到 2069 年。
加上减法根本不起作用!
这是怎么回事? 我还没有发现任何有关此类问题的信息,但对我来说,它发生在 Chrome、Firefox、Edge 中......
我还尝试了不同的 jQuery 版本(参见上面的代码:1.12,参见 JSFiddle:3.3)。
最佳答案
当获取输入的值时,使用parseInt()
将其解析为整数,这将解决您的问题
$("body").change(".editField", function() {
var startDate = new Date(Date.now());
var addedDays = parseInt($("#daysAdded").val());
var calculatedDate = addDays(startDate, addedDays);
console.log(addedDays);
console.log(calculatedDate)
$("#dayResult").val(calculatedDate.toISOString().split("T")[0]);
});
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
};
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<input type='number' id='daysAdded' class='editField'>
<input type='text' id='dayResult'>
关于javascript - 在 JavaScript 中添加天数会返回疯狂的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59291347/