我会收集用户时区以及他们想要在该时区内投放内容的时间。
我的应用程序将使用曼谷时间。
application.rb中
config.time_zone = 'Bangkok'
我想存储用户相对于我的时区输入的时间。
例如,用户选择以下内容:
time = "6:00"
timezone = "(GMT-10:00) Hawaii"
我想将此时间转换为我的应用程序时间并将其保存在数据库中。
如何将夏令时的6AM时区转换为曼谷的时间?
答案 0 :(得分:3)
让我们用你的例子来证明:
config.time_zone = 'Bangkok'
time = "6:00"
timezone = "Hawaii"
您需要做的第一件事是将应用的时区设置为用户选择的时区:
Time.zone = "Hawaii"
然后使用此新时区来解析时间:
hawaii_time = Time.zone.parse("6:00")
如果我们现在打印出hawaii_time
,我们会得到类似的东西(我们有HST -10:00,这意味着它是正确的):
Mon, 15 Aug 2011 06:00:00 HST -10:00
现在,您可以使用rails in_time_zone
方法转换为应用的时区:
local_time = hawaii_time.in_time_zone(Rails.configuration.time_zone)
如果我们打印出local_time
,我们会得到类似的东西(我们有ICT +07:00这对曼谷来说是正确的):
Mon, 15 Aug 2011 23:00:00 ICT +07:00
我们现在可以将应用的时区重置为原始值:
Time.zone = Rails.configuration.time_zone