В настоящее время я пытаюсь решить, что делать с моим веб-приложением, которое использует Oracle для хранения данных, PHP как серверный язык и JavaScript как клиентскую.Хранение дат в Oracle в приложении, используемом в разных часовых поясах
Приложение будет размещено в Великобритании, но люди из Великобритании, США и других европейских стран будут входить в систему и использовать его. В настоящий момент, если какое-либо событие «аудитируемого» происходит в результате действия пользователя, запись сохраняется в контрольном журнале, при этом SYSDATE сохраняется против него.
Когда пользователи просматривают контрольный журнал, я хочу, чтобы время отображалось в их локальном часовом поясе.
О чем я думаю: - Поскольку SYSDATE - это время системных часов на сервере Oracle, я должен установить часовой пояс сервера Oracle в UTC (без изменений для летнего времени). Это обеспечит сохранение всех дат в одном постоянном часовом поясе, поэтому преобразование его не должно быть затруднительным. - Преобразование времени в локальное время в браузере с использованием функции getTimezoneOffset() JavaScript для добавления/вычитания минут.
Это правильный способ сделать это, или я чего-то не хватает?
Привет, и спасибо за ваш ответ.К сожалению, я не думаю, что изменение всех SYSDATE в TIMESTAMP с локальным TIMEZONE будет возможно для меня - это будет означать изменение буквально тысяч SQL-операторов. Как вы думаете, мой подход будет работать? Если все SYSDATE хранятся в формате UTC, то почему имеет значение, в какой временной зоне находился пользователь, когда они его сохраняли? Он может быть преобразован из UTC в часовой пояс пользователя, когда он будет возвращен к ним. – user1578653
Да, ваш aproach должен работать так же хорошо –