相关疑难解决方法(0)

在Rails和PostgreSQL中完全忽略时区

我正在处理Rails和Postgres中的日期和时间并遇到这个问题:

数据库采用UTC格式.

用户在Rails应用程序中设置选择的时区,但仅在获取用户本地时间来比较时间时使用.

用户存储时间,例如2012年3月17日晚上7点.我不希望存储时区转换或时区.我只想保存日期和时间.这样,如果用户改变他们的时区,它仍将显示2012年3月17日,晚上7点.

我只使用用户指定的时区来获取用户本地时区当前时间之前或之后的记录.

我目前正在使用"没有时区的时间戳",但是当我检索记录时,rails(?)会将它们转换为应用程序中的时区,这是我不想要的.

Appointment.first.time
 => Fri, 02 Mar 2012 19:00:00 UTC +00:00 
Run Code Online (Sandbox Code Playgroud)

因为数据库中的记录似乎是以UTC形式出现的,我的黑客是用当前时间,用'Date.strptime(str,"%m /%d /%Y")删除时区,然后做我的查询:

.where("time >= ?", date_start)
Run Code Online (Sandbox Code Playgroud)

似乎必须有一种更简单的方法来忽略周围的时区.有任何想法吗?

postgresql timezone datetime ruby-on-rails ruby-on-rails-3

156
推荐指数
1
解决办法
3万
查看次数

代表 PostgreSQL 中的未来时间

I\xe2\x80\x99 已被调整为将过去的日期作为 UTC 存储在数据库中,因为这实际上是事件发生的时间。对于未来的日期,我会将其与特定时区一起存储,以避免诸如闰秒或时区规则更改之类的更改。

\n\n

Postgres 有timestamp with timezone,但在幕后,它将其存储为 UTC,从而推断指定的时区是 UTC 的偏移量。如果时区规则发生更改,则不会反映在该列中。

\n\n

在这种情况下有什么建议?

\n

postgresql timezone datetime timestamp-with-timezone

2
推荐指数
1
解决办法
1575
查看次数