我有以下代码
function test() {
const endDate = new Date("2023-04-28T23:00:00-0700")
const today = new Date()
endDate.setHours(0, 0, 0, 0)
today.setHours(0, 0, 0, 0)
// Convert to local date string
const endDateString = endDate.toLocaleDateString()
const todayString = today.toLocaleDateString()
// Compare local date strings
if (endDateString === todayString) {
return 0
}
const timeDifference = endDate.getTime() - today.getTime()
const daysLeft = Math.ceil(timeDifference / (1000 * 3600 * 24))
return daysLeft
}
console.log(test());
今天是4月27日,在英国伦敦,但是当我看到daysLeft输出时,它返回2天。我不清楚为何会出现这种情况
1条答案
按热度按时间z4iuyo4d1#
2是预期输出。考虑:
endDate
最初定义的时区指示符为-7:00,而您所在位置的时区为+1:00(GMT +夏令时)。这意味着endDate
是2023-04-29 07:00:00 +01:00(在您的当地时区)。在美国是星期五晚上,在西欧是星期六早上。today
最初约为2023-04-29 17:30:00 +0100(当地时间)。事实上,这就差了2天。
所以是的,Javascript可以“正确计算天数差异”。