如何将服务器时间更改为导轨上的客户端时间?
问题描述:
所以我最终的目标是让Heroku服务器的Time.now与您在JavaScript中执行新的Date.now()的时间相同。到目前为止,我所做的工作就是捕获JavaScript中的时区偏移量,并在适当的客户端时区上设置Rails上的Time.zone,所以现在Time.zone是正确的时区。但是,Time.now仍然反映了真实时区,而不是时区。我想这不是我想要做的第一件事。如何将服务器时间更改为导轨上的客户端时间?
所以我再次想要的是服务器时间来反映客户端时间,因此任何操作(如Time.now或DateTime.now或Date.today)都将显示客户端时间。
答
入住这
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在指定的时区给出时间。
感谢, 阿米特·帕特尔
如果你有来自两个不同大洲的两个用户在同一时间? – SLaks 2012-04-19 14:57:46
我相信他们会有不同的时间数据应用程序的实例。 – Andy 2012-04-19 15:02:14
错误;他们会得到两个线程。 – SLaks 2012-04-19 15:02:28