我目前正在嘗試決定如何處理我的web應用程序,該應用程序使用Oracle存儲數據,PHP作爲服務器端語言和JavaScript作爲客戶端。在不同時區使用的應用程序中存儲Oracle日期
該應用程序將在英國託管,但來自英國,美國和其他歐洲國家的用戶將登錄並使用它。此時,如果由於用戶操作而發生任何「可審覈」事件,則會將記錄保存到審計跟蹤中,並將SYSDATE保存在審計跟蹤中。
當用戶查看審計跟蹤時,我希望時間顯示在他們的本地時區。
我在想的是: - 由於SYSDATE是Oracle服務器上系統時鐘的時間,我應該將Oracle服務器的時區設置爲UTC(夏令時沒有更改)。這將確保所有日期都保存在一個恆定時區,因此轉換它不應該很困難。 - 使用JavaScript的getTimezoneOffset()函數將時間轉換爲瀏覽器中的本地時間以添加/減去分鐘。
這是正確的做法,還是我錯過了什麼?
嗨,謝謝你的回答。不幸的是,我不認爲將所有的SYSDATEs改爲TIMESTAMP WITH LOCAL TIMEZONE對我來說都是可能的 - 這意味着會改變幾千個SQL語句。你認爲我的方法可行嗎?如果所有SYSDATE都以UTC格式存儲,那麼爲什麼用戶在存儲它時的時區是什麼?當它顯示回給用戶的時區時,它可以從UTC轉換爲用戶的時區。 – user1578653
是的,你的問題也應該起作用 –