【问题标题】:Rails timezone changes when increasing timestamp增加时间戳时Rails时区更改
【发布时间】:2015-04-20 07:21:33
【问题描述】:

我正在尝试根据时间戳中的间隔创建重复事件并遇到似乎奇怪的行为:如果我继续将时间戳增加每周间隔(604800 秒),Rails 似乎会更改时区我。

t = Time.new(2015, 2, 22, 14, 0)
 => 2015-02-22 14:00:00 -0500 
gap = 60 * 60 * 24 * 7
 => 604800 
newt = t + gap
 => 2015-03-01 14:00:00 -0500 
newt + gap
 => 2015-03-08 15:00:00 -0400 

我做错了什么?或者我在做什么导致这个时区问题?

【问题讨论】:

  • 您当地时区的夏令时更改?

标签: ruby-on-rails timezone recurring-events


【解决方案1】:

这是因为时区在 2015 年 3 月 8 日从标准时间更改为夏令时。

【讨论】:

  • 一种方法是从 UTC 时间开始:t = Time.new(2015, 2, 22, 14, 0).utc
  • 我开始的时间是 UTC,但是,当我将时间戳增加 1 周时,如果我们在我们的时区“增加或减少一个小时”,它会打乱时间它应该是。
  • 我想知道这是否是特定于 Rails 版本的。在 Rails 4.2.0 下,只要我从没有 DST 的时区开始,那么即使通过 DST 边界,计算也是正确的。
  • 我会检查我的 Rails 版本,并在此更新您。
猜你喜欢
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-11
  • 2013-08-17
  • 1970-01-01
相关资源
最近更新 更多