【问题标题】:DST in Ruby not accurate?Ruby 中的 DST 不准确?
【发布时间】:2013-03-26 03:39:42
【问题描述】:

我正在使用 Ruby on Rails 开发包含时区转换的应用程序。发现了一件有趣的事情:现在是 2013 年 3 月 26 日,我将时区设置为雅典,它似乎已经在 DST(Time.zone 显示 GMT +2 雅典,但格式化时间显示 +0300)。然后我改成开罗时间,格式化的时间又回到+0200

但是,根据http://www.timeanddate.com/time/dst/2013.html,DST 更改应该发生在 3 月 31 日。它不应该在 DST 中。

这是 Ruby 中的一个错误,还是我犯了一个错误?

编辑: 我从数据库中格式化了一个日期时间,即 April.1。所以程序格式化了那个时间并为“那个”日期时间显示 DST,而不是在当前时间显示它。

我的错。谢谢大家

【问题讨论】:

  • 你运行的代码是什么?更改时区是什么意思。
  • 展示你正在讨论的代码真的很重要,而不是让我们想象它。

标签: ruby-on-rails ruby timezone


【解决方案1】:

我怀疑您看到的 UTC 节日不是您所期望的。如果您正在查看时区,我相信 DST 的 UTC 偏移量不会改变,但如果您处理特定时间并询问 UTC 偏移量,您会看到您所期望的。

> ActiveSupport::TimeZone['Athens'].now.utc_offset
=> 7200

> (ActiveSupport::TimeZone['Athens'].now+1.week).utc_offset
=> 10800

【讨论】:

  • 我认为,要始终处理时区中的特定时间,而不是时区本身。
  • 谢谢,这是我遇到的确切错误
猜你喜欢
  • 1970-01-01
  • 2015-12-17
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多