[英]Rails 3.1 Time zone, totally stumped
我有一个用户模型和一个朋友模型。.我试图跟踪用户上次与朋友联系的时间。 我有一个守护程序来收集此信息并将其保存为:
friend.last_contact = Time.parse(status.created_at) #this is where I go wrong
friend.save
我从Twitter获得此信息,该信息以UTC报告,格式如下:
"Thu Jan 05 23:29:00 +0000 2012"
当我进入rails控制台并执行以下命令时,日期会正确地保存为带有UTC时间的UTC。 但是,当我通过守护程序收集此信息时,它将与UTC一起使用本地时间将其保存在数据库中。这使它有4个小时的休假时间。我正在使用RailsRunner运行守护程序,因此我相信会得到积极的支持应该没事。 我无法为自己的生活弄清楚出了什么问题..
从我的服务器rails控制台中获得一些输出:
1.9.1 :001 > Time.now
=> 2012-01-10 00:40:37 +0400
1.9.1 :002 > Time.zone.now
=> Mon, 09 Jan 2012 20:40:56 UTC +00:00
这是20分钟前检索到邮件时保存的时间戳:
1.9.1 :009 > b.last_contact
=> Tue, 10 Jan 2012 00:27:20 UTC +00:00
您会注意到它是服务器的“ Time.now” ..但已保存为UTC ...让我感到困惑的是,如果我进入Rails控制台并输入:
> friend.last_contact = Time.now ; friend.save
要么
> friend.last_contact = Time.zone.now ; friend.save
我提出了正确的时间……任何帮助表示赞赏。
我也在同一个问题上挣扎,在Twitter上也挣扎过(尽管这并不是很重要)。
三个想法:
您正在以UTC时间运行守护程序的服务器吗? 在Rails 3中,时区的工作方式是在保存时 (而不是之前)将时间转换为系统时区。 因此,看起来不错,直到您保留该值为止。
您的测试/产品数据库是否不在UTC中,而本地测试数据库是否在? 如果您在托管的数据中心中运行,则有时它们不是在UTC而是在托管的任何时区中运行数据库。
守护程序是否可能在具有不同TZ环境变量(或不同语言环境)的用户帐户下运行? http://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.