【问题标题】:Rails, how to get hours of a datetime in the correct time zone?Rails,如何在正确的时区获取日期时间的小时数?
【发布时间】:2013-04-07 19:55:26
【问题描述】:

我有一个报价模型。当我从命令行访问它时,它以以下格式显示:

1.9.3p392 :058 > o = Offer.last
 => #<Offer id: 15, title: "Testing", valid_from: "2013-04-12 09:00:00", valid_until: "2013-04-12 14:00:00", created_at: "2013-04-12 18:31:54", updated_at: "2013-04-12 18:31:54"> 

在此输出中,valid_fromvalid_until 的格式符合我的预期。但是,当我直接访问它们时,我会得到不同的东西:

1.9.3p392 :059 > o.valid_from
   => Fri, 12 Apr 2013 05:00:00 EDT -04:00 

问题来自我在app/models/offer_model.rb 中的这个函数:

  def start_hour
    self.valid_from.strftime('%l').to_i unless self.valid_from.nil?
  end

当我使用上面的模型运行此命令时,输出为5。在这种情况下,我希望它返回9。在这种情况下,如何让start_hour 返回为时区调整的小时?

【问题讨论】:

    标签: ruby-on-rails ruby date timezone


    【解决方案1】:

    您在 config/application.rb 中使用的是哪个时区? Rails 将打印日期调整为此文件中设置的时区。

    【讨论】:

    • config.time_zone = 'Eastern Time (US &amp; Canada)'
    • 就是这样 - timezones 尝试将您的 time_zone 更改为 UTC(或者只是将这一行注释掉,因为默认时间是 UTC)。
    猜你喜欢
    • 2015-07-29
    • 2014-05-23
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    相关资源
    最近更新 更多