如何显示移动客户端的时区时间戳



我有一个位于纽约的数据库和一个应用程序服务器。我想编写一个移动应用程序,供来自不同城市(洛杉矶,纽约,迈阿密(的用户使用。我使用Postgresql作为数据库,Spring MVC用于后端,Ionic用于移动应用程序。我的问题是 - 当来自洛杉矶的用户 A 将数据插入数据库以进行时间10:00 AM时,我应该如何向来自纽约的用户显示此数据,因为存在时区差异?我应该如何在Postgres中存储这种数据,以及我应该如何在Spring MVC中处理它?我的休息时间应该以毫秒为单位,还是应该使用timestamptimestampz

提前感谢!

您应该将数据存储为 TIMESTAMPTZ。 这就是该数据类型的用途。这篇博文对此进行了一些解释。

TIMESTAMPTZ 以绝对时间存储所有时间戳,并根据用户的时区设置显示它们。 例如:

postgres=# create table times ( some_time timestamptz );
CREATE TABLE
postgres=# set timezone = 'US/Eastern';
SET
postgres=# insert into times values ( '2017-09-15 10:00:00' );
INSERT 0 1
postgres=# set timezone = 'US/Pacific';
SET
postgres=# select * from times;
       some_time        
------------------------
 2017-09-15 07:00:00-07
(1 row)
postgres=# set timezone = 'US/Eastern';
SET
postgres=# select * from times;
       some_time        
------------------------
 2017-09-15 10:00:00-04
(1 row)

这允许您从用户的角度显示正确的时间,即使对于自己四处移动和更改时区的用户也是如此。 您只需要记住在连接时在JDBC中设置时区即可。

最新更新