2015-10-05 49 views
-1

我有一些问题Rails的日期时间Rails的时间格式,结果没有预期的一个

我这样做:

@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十点40分23秒


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

我的问题是为什么它在数据库中有不同的价值?以及cronjob如何反应?需要哪些价值?

+2

其实这取决于你的时区设定你的Rails应用程序。您的导轨服务器时区不同,因此它在数据库服务器中显示不同的值。而你的cron jon取决于你的Rails服务器的时区 –

+0

那好吧那么会采用那个呢? 2015-10-05T12:40:23 + 02:00 – Felix

+1

是的,它会占用你的导轨时区。如果你更新你的cronjob与rails应用程序 –

回答

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