【发布时间】:2014-10-07 15:15:45
【问题描述】:
给定开始日期和天数,我需要显示结束日期 = 开始日期 + 天数。
所以我做了这样的事情:
var endDate=new Date(startDate.getTime()+ONE_DAY);
一切正常,除了 10 月 25 日和 26 日少了一天。
例如:
2014-01-01 + 2 days = 2014-01-03
2014-10-25 + 2 days = 2014-10-26 (here is the case I need to treat).
出现这种差异是因为时钟倒退了 1 小时。实际上2014-10-27 00:00:00 变成了2014-10-26 23:00:00。
一个简单的解决方案是在另一个小时(例如凌晨 3 点)计算它。但我只想在发生这种情况时显示一个注释。
例如,如果用户输入 2014-10-25,我会显示一个弹出窗口,说 [something]。
现在真正的问题来了……我似乎找不到任何算法可以说明时钟何时回到 X 年。
例如...在 2014 年,这一天是 10 月 26 日。 2016 年是 10 月 30 日 (https://www.gov.uk/when-do-the-clocks-change)。为什么?这个日期看起来是随机的,但我不这么认为。那么......时钟什么时候回退/前进?
编辑:所有答案/cmets 都有助于解决问题。但是……我已经过了那个阶段。现在我只对“时钟改变的日子到底是怎么计算出来的?”很感兴趣。
【问题讨论】:
-
如果你不反对使用库,我强烈推荐 moment.js 和 moment timezone,它在处理这类情况时消除了很多麻烦 (momentjs.com)
-
夏令时不是基于特定日期,它通常是特定月份的第一个星期日的 02:00,随着地方采用或停止使用它而频繁变化,或者只是改变它开始的一周因为这似乎是个好主意。没有一致性,尽管赤道附近的国家往往不会比两极附近的国家更多地使用它。
标签: javascript date clock hour