所以我的最终目标是让Heroku服务器的Time.now与您从JavaScript执行新的Date.now()的时间相同。到目前为止我所做的是从JavaScript捕获时区偏移量,并使用适当的客户端时区在Rails上设置Time.zone,所以现在,Time.zone是正确的时区。但是,Time.now仍然反映了真实的时区而不是Time.zone。我想这不是我想在第一时间做的事情。
因此,我想要的只是服务器反映客户端时间的时间,因此任何操作(如Time.now或DateTime.now或Date.today)都将显示客户端时间。
答案 0 :(得分:5)
显示时,应该应用UTC偏移量。
所有服务器端时间计算或存储都应以UTC格式完成。
答案 1 :(得分:4)
检查
1.8.7 :001 > Time.zone
=> #<ActiveSupport::TimeZone:0xb740d1b8 @tzinfo=#<TZInfo::TimezoneProxy: Etc/UTC>, @utc_offset=nil, @name="UTC", @current_period=nil>
1.8.7 :002 > Time.now
=> Fri Apr 20 13:13:53 +0530 2012
1.8.7 :003 > Time.zone.now
=> Fri, 20 Apr 2012 07:43:59 UTC +00:00
1.8.7 :004 > Time.zone = "Helsinki"
=> "Helsinki"
1.8.7 :005 > Time.zone
=> #<ActiveSupport::TimeZone:0xb70ab830 @tzinfo=#<TZInfo::TimezoneProxy: Europe/Helsinki>, @utc_offset=nil, @name="Helsinki", @current_period=nil>
1.8.7 :006 > Time.now
=> Fri Apr 20 13:14:48 +0530 2012
1.8.7 :007 > Time.zone.now
=> Fri, 20 Apr 2012 10:45:10 EEST +03:00
1.8.7 :008 > Time.zone.now.to_time.strftime("%c").to_datetime
=> Fri, 20 Apr 2012 10:47:01 +0000
1.8.7 :009 >
所以Time.zone.now.to_time.strftime("%c").to_datetime
会在用户的时区给你当前时间UTC
Time.now总是在服务器的时区中给出时间。 Time.zone.now在指定的时区内提供时间。
谢谢, 阿米特帕特尔