2017-06-22 88 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