2017-06-22 84 views
1

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

在此先感谢!

回答

1

您应该将数据存储为TIMESTAMPTZ。这是数据类型的用途。 This blog post解释了一下。

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中设置时区。

+0

谢谢!这对我帮助很大 – 0bj3ct