如何设置Time.zone = GMT + 05:30

时间:2013-02-25 12:32:40

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

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

Time.zone = GMT+05:30

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

为了将类似的字符串转换为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 :(得分:3)

如果你知道你可以做的偏移

Time.zone = 19600

您也可以使用一些rails助手

Time.zone = 5.hours + 30.minutes

我不确定这将如何处理夏令时