Rails时间格式,结果不是预期的

时间:2015-10-05 09:43:30

标签: ruby-on-rails ruby ruby-on-rails-4

我在使用Rails DateTime时遇到了一些问题

我这样做:

@now = DateTime.now

结果是= 2015-10-05T11:40:23 + 02:00

在下一步中,我这样做:

@now =  @now + params[:time].to_i.hours

在此步骤中,我将实际时间添加了几个小时。 ......工作正常。

结果可能是: 2015-10-05T12:40:23 + 02:00 (如果我加一小时)

现在,当我将它存储到数据库时,它存储了这个: 2015-10-05 10:40:23

我认识到如果我从数据库中获取数据我得到了正确的值: 2015-10-05T12:40:23 + 02:00

我的问题是为什么它在数据库中是一个不同的值? cronjob如何反应?需要哪个值?

1 个答案:

答案 0 :(得分:1)

这是因为Time Zones不同。您的时区距离UTC +2小时。数据库始终在UTC中节省时间。当您获取时间,然后根据您的时区转换UTC时间。

默认情况下,cron作业在UTC时间运行。但我们可以改变它

例如,我们的冠军在:

5 2 3 * * TZ="UTC" /do/command > /dev/null 2>&1

默认情况下TZ="UTC",但我们可以更改它:TZ="America/New_York"

5 2 3 * * TZ="America/New_York" /do/command > /dev/null 2>&1