【问题标题】:Rails - Is there an easy way to check if British Summer Time and GMT are different?Rails - 有没有一种简单的方法来检查英国夏令时和格林威治标准时间是否不同?
【发布时间】:2017-04-10 14:49:23
【问题描述】:

我一直在阅读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')

提前致谢

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    列出的方法似乎不再有效

    你用错了方法:

    • Time.now 是一个返回“普通”Time 实例的 Ruby 方法。

    • 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
    

    【讨论】:

      猜你喜欢
      • 2015-08-09
      • 2011-05-13
      • 2013-11-09
      • 2011-10-30
      • 1970-01-01
      • 2013-03-10
      • 2010-12-02
      • 2013-06-01
      • 2011-02-20
      相关资源
      最近更新 更多