【发布时间】:2012-02-06 08:58:09
【问题描述】:
我有一个用户模型和一个朋友模型。我试图跟踪用户上次联系朋友的时间。我有一个收集这些信息并将其保存的守护进程:
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 小时.. 我正在使用 rails runner 运行我的守护程序,所以我相信积极支持应该没事。我这辈子都想不通出了什么问题..
从我的服务器 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
我得出的时间是正确的......感谢任何帮助。
【问题讨论】:
-
为什么
friend.last_contact = status.created_at不起作用? -
对不起,你看到的只是我最后一次尝试.. status.created_at 最终在数据库中得到了相同的不正确 utc 值..
-
我应该补充一下,我也试过了:friend.last_contact = Time.now 在守护程序文件中以及friend.last_contact = Time.zone.now 两者都没有工作,同样被误导UTC
标签: ruby-on-rails ruby-on-rails-3 datetime timezone