经过计算,日期似乎正在将时区从夏令时更改为标准时区

Date appears to be changing time zone from daylight to standard upon calculation

本文关键字:夏令时 时区 标准时区 计算 日期 经过      更新时间:2023-09-26

我有一个jQuery范围滑块,它应该根据每个值将日期范围增加和减少一周。当递增超过某个点(在我的例子中是11月1日)时,时区从白天变为标准时间。我想这与我计算新日期的方式有关,但我似乎不知道是什么。

我用计算

new Date(minDate.getTime() + (sliderValue * 7) * 1000 * 60 * 60 * 24)

下面是一个小提琴的例子:https://jsfiddle.net/aedryan/f4pvg84e/

您的代码实际上运行良好。它在11月1日之后发生变化的原因是,我们在该日期从东部夏令时(EDT)切换到东部标准时间——在这两种情况下,您都代表东部时区。顺便说一句,对于未来来说,这是一种在日期上增加天数的好方法:

/**
 * extends the functionality of the Date() object to include a function called addDays that adds days to
 * a javascript date based on an integer
 * @param days
 * @returns {Date}
 */
Date.prototype.addDays = function(days){
  var dat = new Date(this.valueOf());
  dat.setDate(dat.getDate() + days);
  return dat;
};

您正在以毫秒为单位计算天数。然而,11月1日实际上是一个轻松的节约(欢迎来到时间文化的奇妙世界)。因此,你的时间减少了1个小时,这意味着你一天计算23个小时,只得到+6。

与以毫秒为单位进行这些更改相反,只需添加天数即可。这可以在JavaScript中轻松完成,因为当天数超过当月可用金额时,它只返回调整后的日期。这意味着你可以将其用于你的新日期论坛

var newDate = new Date(2015, 7, 23+(ui.value*7));

它看起来是这样的:https://jsfiddle.net/u2h261ka/