2017-05-07 811 views
0

上午的日子不好過我的服務器的時區的NodeJS和MySQL數據庫的時區問題

使用的NodeJS作爲後端和快速路線服務

我使用改變的時間與正確的服務器: -

的dpkg-重新配置的tzdata

,我檢查了服務器的時間,似乎不錯

使用

數據

獲取當前的時間我和它是正確的爲我的國家(沙特阿拉伯)

的問題是,當在數據庫中創建記錄還是給我在3小時的延遲內錯誤的時間!

所以數據庫時間和服務器是正確的,怎麼來創建錯誤時間的記錄?

回答

1

保存在數據庫中的時間是UTC。由於沙特阿拉伯時間爲UTC + 3h,您會發現時間差距爲3小時。我建議你保持UTC時區爲原樣,並且每當你檢索一條記錄時,加上3小時的時間將其轉換爲沙特時間。
同樣,如果你想按時間搜索,從你的時間減去3我們要搜索,從而將其轉換爲UTC時間。

+0

感謝先生的快速反應,那麼有沒有什麼辦法來自動處理它,所以任何記錄將+3小時內創建的,因爲我在做複雜的計算,我需要保存正確的時間而不增加+ 3爲記錄(應用層) – Faisal

+0

您可以隨時更改默認的MySQL時區。但是我強烈建議不要這樣做,因爲它限制了應用程序的可伸縮性。 – gaganshera

+0

但是,如果你仍然想這樣做,請使用類似SET time_zone ='America/New_York' – gaganshera

0

我記得這個修正了一個關於時區的錯誤。

var timeZoneDifference=(this.date.getTimezoneOffset()-dateFuture.getTimezoneOffset())/60; 
+0

thnak您先生,請指教我如何使用此代碼,我想修復應用程序層的時區,所以我想純數據沒有任何問題,thnx – Faisal

+0

這個錯誤是因爲我的24小時博彩老闆計時器,當夏令時改變時,GMT偏差與PST不同,持續8小時導致計算錯誤。正如我發現在線共享世界的原始錯誤代碼,我只想添加此修復程序。 –