什么是处理Rails中与时区无关的时间的好方法

时间:2015-11-08 23:46:27

标签: ruby-on-rails date datetime

我正在构建一个任务调度应用程序,我需要两种与时区相关的事件。

与时区无关的时间,无论您的位置如何,我的意思是相同的时间。我想把时间设定为上午8点,无论我在哪里,我都想把它看作是上午8点。我希望将这些用于日常工作,例如我醒来时。因为想要在纽约上午8点醒来,并不意味着想要在洛杉矶上午5点起床。它与时区无关

根据时区相关的时间,我的意思是纽约上午8点的会议将在洛杉矶上午5点举行。它的含义取决于时区。

rails中的任何日期和时间信息始终后跟时区后缀。什么是在轨道中表示与时区无关的时间的好方法?

2 个答案:

答案 0 :(得分:1)

独立于时区存储时间的传统方法是将其存储在UTC中,也称为协调世界时或格林威治标准时间。在Ruby中,您可以通过一次调用utc方法转换为此,例如

irb(main):001:0> Time.now.utc
=> 2015-11-08 23:54:21 UTC

UTC时间的时区偏移量为零。

答案 1 :(得分:1)

由于许多计划方案绝对需要一种方法来表示没有日期或时区的时间,因此DateTimeTime类都不足。

请考虑使用Tod (time-of-day) gem

gem install tod

...

require 'tod'
Tod::TimeOfDay.parse "15:30"   # => 15:30:00

其他示例in the documentation