Ruby on rails 什么';这是在Rails中处理时区无关时间的好方法

Ruby on rails 什么';这是在Rails中处理时区无关时间的好方法,ruby-on-rails,date,datetime,Ruby On Rails,Date,Datetime,我正在构建一个任务调度应用程序,我需要两种类型的事件,它们与时区相关 所谓时区独立时间,我指的是无论你在哪里都是相同的时间。我想把时间定在早上8点,无论我在哪里,我都想把时间定在早上8点。我想把它们用于日常任务,比如当我醒来的时候。因为想在纽约早上8点起床并不意味着想在洛杉矶早上5点起床。它与时区无关 说到时区相关时间,我的意思是,纽约上午8点的会议将是洛杉矶上午5点的会议。其含义取决于时区 rails中的任何类型的日期和时间信息后面总是跟一个时区后缀。在rails中表示时区独立时间的好方法是什

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

所谓时区独立时间,我指的是无论你在哪里都是相同的时间。我想把时间定在早上8点,无论我在哪里,我都想把时间定在早上8点。我想把它们用于日常任务,比如当我醒来的时候。因为想在纽约早上8点起床并不意味着想在洛杉矶早上5点起床。它与时区无关

说到时区相关时间,我的意思是,纽约上午8点的会议将是洛杉矶上午5点的会议。其含义取决于时区


rails中的任何类型的日期和时间信息后面总是跟一个时区后缀。在rails中表示时区独立时间的好方法是什么

独立于时区存储时间的传统方法是以UTC(协调世界时或格林威治标准时间)存储时间。在Ruby中,您可以通过在某个时间调用该方法来转换它,例如

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

UTC时间的时区偏移量为零

由于许多调度场景绝对需要一种方法来表示一天中没有日期或时区的时间,因此
DateTime
time
类都是不够的

考虑改用以下方法:


其他示例。

我看到的处理方法之一是使用“minutes after midnight”格式-将列类型更改为整数,然后将其解析为纯时间对象。请务必阅读,然后单击。是的,您确实需要一种不受时区影响的方式来存储08:00。@BroiSatse-只要您在将其应用于特定时区中的某个日期之前使用它来计算本地时间,就可以了。问题是,由于某些DST转换,存在没有午夜的本地日期。UTC不会因DST而更改,其偏移量为零,但这并不意味着它与时区无关……UTC在安排重复事件方面尤其糟糕。考虑一下我每天早上6点的电话闹钟。重复模式必须存储06:00。如果它存储UTC,那么如果我在PST,它将存储14:00 UTC,但在夏令时,它将关闭一个小时,因为06:00 PDT是13:00 UTC。此外,如果我在旅行时随身携带手机,我希望它会在早上6点在我目前所在的任何时区响,而不是在我举办活动时所在的时区。
gem install tod

...

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