Я работаю над проектом, который использовался только в одной стране, но сейчас используется в нескольких странах.
Поэтому я работаю над некоторыми проблемами DateTime, так как вы можете имитировать.
Я использую угловые js для моего интерфейса, python для моего бэкэнд и Postgres как мою базу данных в этом проекте.
Чтобы избежать каких-либо проблем с DateTime и попытаться упростить работу с часовыми поясами, я сохраняю DateTime в базе данных в формате UTC.
from DateTime import DateTime
# inside a class of my entity
self.start_date = datetime.utcnow()
Это работает нормально, проблема в том, когда я пытаюсь преобразовать дату назад.
Например.
Если мое приложение работает в стране с GMT -1, когда пользователь просит сохранить объект и его значение в базе данных (с использованием UTC now()), DateTime станет 2016-07 -1 3 16:00:00.
Но когда я пытаюсь вернуть значение, у меня есть два сценария:
Я пытаюсь использовать библиотеку momentjs для работы с датами, но ничего не работает.
Мне интересно, нужно ли делать GMT, например (-01: 00), а затем выполнить некоторую математику с DateTime, которая поступает из базы данных, например, sub или sum разница в часах GMT.
Решение:
Мое решение для этого было, хранить все как UTC в моей базе данных.
Получите время datetime как UTC и скрытое для часового пояса браузеров с помощью библиотеки timejs.
Делать так.
moment.tz(moment.utc(datetime), moment.tz.guess());
timestamp with timezone
в базе данных и значение назначения сnow()
, а затем выselect timestamp_column at time zone 'your_zone'
**timestamp** in the database
. Я используюutcnow()
чтобы избежатьutcnow()
сutcnow()
в базе данных. Теперь мне нужно преобразовать это значение после получения его из базы данных.select timestamp_column at time zone 'your_zone'
- не вариант в моем случае.