如何在 Rails 的 Ruby 的时区中找到两个日期之间的剩余时间?
How to find the remaining time between two dates in a time zone in Ruby on Rails?
我正尝试在 Rails 上使用 Ruby 中的 flipclock 对某些事件进行倒计时。
我试图找到 EST 事件的时差。
time_diff = <%= (Time.utc(2016, 7, 2, 18, 14, 0).in_time_zone("Eastern Time (US & Canada)") - Time.now.in_time_zone("Eastern Time (US & Canada)")).to_i.abs %>;
我试图通过相差一小时来检查它是否正确,但我总是得到错误的剩余小时数。
我想这就是你想要的:
(ActiveSupport::TimeZone.new("EST").local(2016, 7, 2, 18, 14, 0) - Time.now).to_i.abs
你问题中的代码等同于
(Time.utc(2016, 7, 2, 18, 14, 0) - Time.now).to_i.abs
您可能希望表达式的第一部分表示“18:14 EST”,但它的意思是“18:14 UTC……但要显示 EST 的时间”。
如果您注意到
,它可能会澄清事情
Time.utc(2016, 7, 2, 18, 14, 0).in_time_zone("EST") == Time.utc(2016, 7, 2, 18, 14, 0)
因为
Time.utc(2016, 7, 2, 18, 14, 0).in_time_zone("EST").to_i == Time.utc(2016, 7, 2, 18, 14, 0).to_i
但是
Time.utc(2016, 7, 2, 18, 14, 0).in_time_zone("EST").to_s != Time.utc(2016, 7, 2, 18, 14, 0).to_s
我正尝试在 Rails 上使用 Ruby 中的 flipclock 对某些事件进行倒计时。
我试图找到 EST 事件的时差。
time_diff = <%= (Time.utc(2016, 7, 2, 18, 14, 0).in_time_zone("Eastern Time (US & Canada)") - Time.now.in_time_zone("Eastern Time (US & Canada)")).to_i.abs %>;
我试图通过相差一小时来检查它是否正确,但我总是得到错误的剩余小时数。
我想这就是你想要的:
(ActiveSupport::TimeZone.new("EST").local(2016, 7, 2, 18, 14, 0) - Time.now).to_i.abs
你问题中的代码等同于
(Time.utc(2016, 7, 2, 18, 14, 0) - Time.now).to_i.abs
您可能希望表达式的第一部分表示“18:14 EST”,但它的意思是“18:14 UTC……但要显示 EST 的时间”。
如果您注意到
,它可能会澄清事情Time.utc(2016, 7, 2, 18, 14, 0).in_time_zone("EST") == Time.utc(2016, 7, 2, 18, 14, 0)
因为
Time.utc(2016, 7, 2, 18, 14, 0).in_time_zone("EST").to_i == Time.utc(2016, 7, 2, 18, 14, 0).to_i
但是
Time.utc(2016, 7, 2, 18, 14, 0).in_time_zone("EST").to_s != Time.utc(2016, 7, 2, 18, 14, 0).to_s