Rails - 有没有简单的方法来检查英国夏令时和GMT是否不同?

时间:2017-04-10 14:49:24

标签: ruby-on-rails ruby

我一直在阅读Rails BST timezone implementation,但列出的方法似乎不再适用:

Time.zone = 'London'
Time.now = 2017-04-10 15:47:45 +0100
Time.zone = 'Cairo'
Time.now = 2017-04-10 15:47:45 +0100

这显然是错误的。我有一个简单的方法来检查吗?我的最终结果是试图看看伦敦时区是否有+0100,我可以简单地做Time.now.include吗?(' + 0100')

提前致谢

1 个答案:

答案 0 :(得分:2)

  

列出的方法似乎不再起作用了

你使用了错误的方法:

  • Time.now是一个返回" plain"的Ruby方法。 Time实例。

  • Time.zone.now是一个返回ActiveSupport::TimeWithZone实例的Rails方法。

还有一条捷径Time.current

Time.zone = 'London'

Time.zone.now
#=> Mon, 10 Apr 2017 15:54:35 BST +01:00

Time.current
#=> Mon, 10 Apr 2017 15:54:35 BST +01:00

使用其他时区:

Time.zone = 'Cairo'

Time.zone.now
#=> Mon, 10 Apr 2017 16:54:35 EET +02:00
  

我的最终结果是试图查看伦敦时区是否有+0100

在那种情况下" + 0100"表示daylight saving time。正确的方法是dst?

t1 = Time.zone.parse('2017-03-26')   #=> Sun, 26 Mar 2017 00:00:00 GMT +00:00
t2 = Time.zone.parse('2017-03-27')   #=> Mon, 27 Mar 2017 00:00:00 BST +01:00

t1.dst?   #=> false
t2.dst?   #=> true