2017-04-10 22 views
0

我一直在阅读Rails BST timezone implementation但是列出的方法似乎不工作了:Rails - 有没有简单的方法来检查英国夏令时和GMT是否有所不同?

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”)

在此先感谢

回答

2

方法上市似乎并没有工作了

您使用了错误的方法:

  • Time.now是一个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 
+0

非常好 - 很多感谢完美的作品! – Mark

相关问题