因此,当我设置 Time.zone 时,我从视图中的日期得到了一些不一致的结果。我希望有人能告诉我发生了什么。我在 ubuntu 服务器 12.04 上运行了 ruby on rails 应用程序
在我的应用程序控制器中,我有一个 before_filter 设置来自 current_user 公司的 time_zone 记录的 Time.zone。
before_filter :set_user_time_zone
private
def set_user_time_zone
Time.zone = current_user.company.time_zone if user_signed_in?
end
我正在测试的用户位于“中部时间(美国和加拿大)”
原始数据库记录是 2012-08-13 20:10:54
在我看来,我使用以下代码来格式化日期:
servicedata.service_last_run_time.strftime('%b %e, %Y %l:%M%P')
我希望返回“2012 年 8 月 13 日晚上 8:10”,这将是“中部时间(美国和加拿大)”的上述记录,但是我得到“2012 年 8 月 13 日上午 9:10”
我在 Rails 控制台中测试了相同的代码,它工作正常。我不确定为什么它不起作用。
在我找到 before_filter 的想法之前,我只是在我的所有视图中链接了“in_time_zone”,但得到了相同的结果。例子
servicedata.service_last_run_time.in_time_zone(current_user.company.time_zone).strftime('%b %e, %Y %l:%M%P')
同样 Time.zone 或手动将 in_time_zone 链接到日期对象在 Rails 控制台中工作正常,但在视图中返回一个可怕的错误时间。
我测试了服务器是时候确保它们与以下 UTC 保持不变:
Rails Console : 2012-08-14 02:06:29 +0000
Ubuntu Shell: Tue Aug 14 02:06:38 UTC 2012
我不知道我在这里缺少什么。