【问题标题】:NoMethodError: undefined method `zone' for Time:ClassNoMethodError:时间:类的未定义方法“区域”
【发布时间】:2014-04-09 17:46:01
【问题描述】:

如果我不使用 rails,如何在 ruby​​ 中使用 Time.zone 我想做 Time.now 但这在 rails 中可用,但在 ruby​​ 中不可用

我以为

require 'time'

会解决这个问题并使其在 ruby​​ 中可用,但它没有,我明白了

NoMethodError: undefined method `zone' for Time:Class

【问题讨论】:

    标签: ruby date time timezone zone


    【解决方案1】:

    我不知道,你是什么意思。但我认为它应该如下工作:

    (arup~>~)$ pry --simple-prompt
    >> Time.now
    => 2014-04-09 23:19:04 +0530
    >> Time.now.strftime('%Z')
    => "IST"
    >> Time.now.strftime('%z')
    => "+0530"
    >> Time.now.zone
    => "IST"
    

    文档:#strftime#zone

    【讨论】:

      【解决方案2】:

      您尝试将 zone 用作类方法 (Time.zone) [1]。如果要使用类方法:

      1.9.3-p448 :007 > Time.now.zone
      => "EDT" 
      

      但是Time.now 只是实例化您自己的Time[2] 实例的好方法。所以你真的只是这样做(调用实例方法):

      1.9.3-p448 :009 > time = Time.new
      => 2014-04-09 15:14:01 -0400 
      1.9.3-p448 :010 > time.zone
      => "EDT" 
      

      [1]http://www.railstips.org/blog/archives/2009/05/11/class-and-instance-methods-in-ruby/

      [2]http://ruby-doc.org/core-1.9.3/Time.html#method-c-now

      【讨论】:

      • Rubocop 错了吗?它建议Do not use Time.now without zone. Use Time.zone.now instead.
      • 我在我的 Rubocop 配置中使用了 Rails cops。 Time.zone.now 是 Rails 添加的东西。
      猜你喜欢
      • 2018-05-16
      • 2013-04-24
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 2019-06-12
      相关资源
      最近更新 更多