【问题标题】:how do I set Time.zone = GMT+05:30如何设置 Time.zone = GMT+05:30
【发布时间】:2013-02-25 12:32:39
【问题描述】:

我正在使用 Rails 3.2。我想将时区设置为 GMT+05:30。但是下面的命令给了我一个错误:

Time.zone = GMT+05:30

SyntaxError: (irb):5: syntax error, unexpected ':', expecting $end

【问题讨论】:

  • 首先 - 您将无法访问标准 irb 控制台中的 rails 组件,您必须启动 rails 控制台
  • 这是我在 Rails 控制台上测试的。 ActiveSupport::TimeZone.all

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.2


【解决方案1】:

为了将这样的字符串转换为 TimeZone,您首先必须将其转换为偏移量,您可以使用一点正则表达式来完成。

time_zone_string = "GMT+5:30"
offset = time_zone_string.match(/GMT(\+|-)(\d+):(\d+)/) { "#{$1}1".to_i * ($2.to_i.hours + $3.to_i.minutes) }
time_zone = ActiveSupport::TimeZone.new(offset)
time_zone # (GMT+5:30) Chennai

【讨论】:

    【解决方案2】:

    获取时区的名称而不是偏移量。

    >> Time.zone = 'New Delhi'
    >> Time.now # Mon, 25 Feb 2013 18:04:43 IST +05:30
    

    【讨论】:

    • 你是对的,但是我从 javascript 代码中得到了 GMT+05:30,所以我遇到了问题。
    【解决方案3】:

    如果你知道偏移量,你就可以做

    Time.zone = 19600
    

    你也可以使用一些 Rails 助手

    Time.zone = 5.hours + 30.minutes
    

    我不确定这对夏令时有何影响

    【讨论】:

      猜你喜欢
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多