gpt4 book ai didi

javascript - 第二天不能使用 setDate

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:29:33 28 4
gpt4 key购买 nike

尝试让用户点击next和prev按钮使用JS调整日期。

当我加一天并尝试获取明天的日期时,这不起作用。

$('#next_date').click(function(e) {
var get_selected_date = "2015-12-14",
nextDay = get_selected_date.split('-')[2] + 1,
selectedDate = new Date(get_selected_date),
date = new Date(selectedDate.setDate(nextDay));
console.log(date);
});

但我设法使用相同的逻辑获得以前的日期,就像下面这样减去一天

$('#prev_date').click(function(e) {
var get_selected_date = "2015-12-14",
nextDay = get_selected_date.split('-')[2] + 1,
selectedDate = new Date(get_selected_date),
date = new Date(selectedDate.setDate(nextDay));
console.log(date);
});

最佳答案

您的问题在于日期是一个字符串,并且通过添加一个附加到字符串 - 1 被转换为字符串而不是 14 被转换为整数。但是,从字符串中减去会将字符串强制转换为数字。这是 JavaScript 的怪癖之一,来自重用运算符。由于加号也用于组合字符串,因此它在混合类型操作数中的行为有些困惑。

小备忘单(假设字符串可以被强制转换为数字):

string + string = string
string + number = string
number + string = string
string - number = number
number - string = number
string - string = number
+string + number = number (read below)

您可以使用 parseInt(str) 将从 get_selected_date.split('-')[2] 获取的字符串解析为 int 或使用常见的解决方法在字符串前加一个加号。这会将字符串强制转换为数字。所以你的代码只需要这样改变:

nextDay = +get_selected_date.split('-')[2] + 1

为了优化你可能还想写

selectedDate.setDate(nextDay);

并使用那个 selectedDate 而不是你的

date = new Date(selectedDate.setDate(nextDay));

setDate() 返回,但它也可以就地工作,因此它会更改您使用它的日期。

旁注:请对所有变量使用 var。否则它们是全局的并且会弄乱您的其他代码。

关于javascript - 第二天不能使用 setDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34264797/

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