Я использую колбу sqlalchemy и postgreSQL, и у меня возникают проблемы с отображаемыми датами, при исследовании этой проблемы я обнаружил еще одну странную вещь:
Создание записи в БД в режиме инкогнито (вкладка браузера Chrome) даетразное / неправильное время.РЕДАКТИРОВАТЬ: Это не имеет ничего общего с режимом инкогнито, оба случая также происходят в обычном режиме.Я еще не понял, почему.
Это код:
Я изменил часовой пояс по умолчанию для моей базы данных:
ALTER DATABASE postgres SET timezone TO 'Europe/Berlin';
модель:
class User(UserMixin, Base):
__tablename__ = 'users'
date_added = Column(DateTime(timezone=True), nullable=False)
Метод, который я использую для добавления даты и времени в БД:
date_added=datetime.today()
Как это выглядит в БД (мое местное время в это время было 13:53:46):
Создание записи не в режиме инкогнито
timestamp with time zone
2019-02-01 13:53:46.73817+01
Создание записи в режиме инкогнито
timestamp with time zone
2019-02-01 12:53:46.73817+01
Это действительно меня беспокоит.Это просто неправильно.Даже если бы я конвертировал объекты datetime в localtime.Обе записи были сделаны одновременно, но показывают разные результаты, как это возможно?
Кроме того, при просмотре этих дат в HTML postgreSQL не применяет смещение, поэтому первая дата выглядит правильно, новторое неверно.
Изначально я просто хотел найти способ хранить ВСЕ объекты даты и времени в Европе / Берлине и возвращать их в Европе / Берлине, поэтому мне не нужно конвертировать UTC в Европу / Берлин, но сейчасЯ думаю, что что-то пошло не так.
Я также дважды проверил свой код везде, я не использую другие методы для манипулирования объектами даты и времени.
EDIT
Я сохраняю дату и время каждый раз, когда пользователь входит в систему. В настоящее время я пробовал это делать не на инкогнито.Мое местное время составляет 14:13:33
, но оно сохраняется в БД: 2019-02-01 13:13:33.804339+01
.Как это вообще возможно?Я знаю, что это не может быть случайным, но сейчас это выглядит как случайное время сохранения, иногда UTC со смещением, а иногда Европа / Берлин со смещением.
РЕДАКТИРОВАТЬ
Я удваиваюсьпроверил все таблицы с помощью SHOW timezone;
, и все они правильно вернули Europe/Berlin