Ruby on Rails 3 Timezone造成1小时差异

时间:2016-04-19 12:07:03

标签: ruby ruby-on-rails-3

我的工作每10分钟运行一次并获取行程数据。旅行有开始时间(离开时间)。该作业向这些旅行发送邮件通知,这些旅行没有在他们的离开时间开始并且已经超过30分钟,即旅行假设在上午10点开始,现在在上午10点30分如果仍然没有开始则向其发送邮件通知。旅行出发时间以UTC为单位。客户/申请时间在东部时区。我面临的问题是作业获取数据并发送邮件,但邮件迟到了1小时。我无法找到原因。 Time.now显示UTC时间,Time.zone.now显示EST时间。 这可能与时区或我用来获取30分钟差异的逻辑有关。假设旅行将在上午8点开始。我的工作什么时候将在上午8:30运行,它将寻找有

的旅行
Model.where("departtime > ? and departtime <= ? ",Time.now - 40.minutes, Time.now - 30.minutes)

此行有助于在当前时间30分钟之前获取行程。如果在这种情况下出行,我会检查消息表中是否有消息(当行程开始时,会发送消息)。如果没有找到记录,则发送邮件。消息表中的时间也是UTC。因此,根据示例,邮件应该在UTC时间8:30和相应的东部时区进行。因此,邮件按照UTC正确运行,但相应的东部时间比实际发送的时间晚了1小时。

示例:旅行计划于06:00(东部时间(美国和加拿大))开始,现在已晚30分钟。然后,当这个工作运行时,不同区域的当前时间是,

Time_now : 2016-04-19 11:30:27 +0000 
Time_in_central : 2016-04-19 06:30:27 -0500 
Time_in_eastern : 2016-04-19 07:30:27 -0400 

下面我已经注意到发送邮件的时间

mail sent UTC time : 2016-04-19 11:30:27 +0000 
mail sent central time : 2016-04-19 06:30:27 -0500
mail sent eastern time : 2016-04-19 07:30:27 -0400 

根据出发时间,即东部时间06:00,邮件应在06:30发送,但发送时间为07:30 请让我知道我错过了什么。

0 个答案:

没有答案