如何在 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