【发布时间】:2022-01-28 17:44:59
【问题描述】:
正确的意思是如果活动是太平洋时间 1 月 24 日 上午 9 点,我希望看到 1 月 24 日 上午 9 点,而不是 1 月 24 日下午 5 点。我在 PostgreSQL 数据库中的 Rails 中记录带有时间和日期的事件。带有时区的时间戳 (timestampz)。只要我将计算机上的数据库和应用程序保持在“美国/太平洋”,一切都很好,但是当我尝试从似乎是 UTC 的 Heroku 服务器上使用它时,时间会偏移 8 小时。我现在终于知道 timestampz 只意味着这是 UTC 的日期时间,但没有存储该区域。我是否需要将时区存储在另一个字段中并进行数学运算以正确查看时间和日期?
将config.time_zone = "America/Los_Angeles" 或"UTC" 添加到config/application.rb 得到与以前相同的结果,即此设置没有任何区别。这不是最终的解决方案,因为数据并不总是在美国/太平洋地区。
在表格中查看:
<%= stat.statdate.localtime.strftime("%a %d %b %Y") %></td> <td class="text-start"> <%= stat.statdate.localtime.strftime("%_l:%M %P") %>
这会导致本地主机上的Thu 27 Jan 2022 9:05 am,但Heroku上的Thu 27 Jan 2022 5:05 pm
并随着时间的推移绘制价值图表,包括一年和每天。用于绘制最近一天的变化。试图让表格和图表同时工作非常痛苦
其中line_chart 使用gem "chartkick",它使用高图表。但是当我将应用程序和数据库移动到 Heroku 时,这不起作用
【问题讨论】:
标签: ruby-on-rails postgresql heroku timestamp chartkick