ruby-on-rails - rails : Difference between timezones in hours

标签 ruby-on-rails ruby time timezone

我想说 user1 比 user2 早 4 小时,这是根据用户在其帐户中指定的时区计算的。

使用以下代码:

time1 = Time.zone.now.in_time_zone(user1.time_zone)
time2 = Time.zone.now.in_time_zone(user2.time_zone)

distance_of_time_in_words time1,time2

...相差不到一分钟 - 同样减去两次得到0。 Rails 显然仍然认为这两次相同。

知道如何计算两个时区之间的差异吗?

最佳答案

如果您使用 time1 实例并对其调用 utc_offset,您将获得与 UTC 的时间偏移量(以秒为单位)。将它与 time2utc_offset 相结合,进行一些减法运算,您应该得到以秒为单位的时差。从那里,您可以根据自己喜欢的任何时间单位进行对话。

irb(main):020:0> time1 = Time.zone.now.in_time_zone("EST")
=> Sun, 09 Jun 2013 07:11:46 EST -05:00 
irb(main):021:0> time2 = Time.zone.now.in_time_zone("MST")
=> Sun, 09 Jun 2013 05:11:49 MST -07:00
irb(main):022:0> time_difference_in_seconds = time2.utc_offset - time1.utc_offset
=> -7200
irb(main):025:0> (time_difference_in_seconds/60/60).abs
=> 2

关于ruby-on-rails - rails : Difference between timezones in hours,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17009239/

相关文章:

sql - postgresql 中用户选择的可变间隔选项

ruby - 如何关闭 "Rack::Protection::JsonCsrf"?

ruby-on-rails - ruby on rails 中的 Payflow 支付集成

linux - 将 bash 脚本中的时间与 ± x 分钟进行比较

ruby-on-rails - 由于 brpop,Rails Sidekiq Redis 长时间运行

ruby - 使用 ruby​​ 的 Neovim 作业控制示例

c - 我将如何暂停时间(编写游戏)

ruby-on-rails - 如何最好地使用 Rails 清理丰富的 html?

ruby-on-rails - Rails - 在本地主机上创建内部服务器错误 (500)

ruby-on-rails - 在同一台服务器上使用 RVM 和 Passenger 部署 Ruby 1.9.2 和 1.8.7 的最佳方式