Прежде всего я знаю, что об этом много тем, и я мог бы использовать там решения, например написать функцию python, которая преобразует объект datetime в нужный мне часовой пояс, и добавить его в качестве фильтра в jinja2.
Но я хотел пропустить этот шаг.
Обычно PostgreSQL сохраняет объекты даты и времени в UTC
.
Что я сделал: я изменил часовой пояс по умолчанию, который использует postgreSQL для сохранения объектов даты и времени: Europe/Berlin
ALTER DATABASE postgres SET timezone TO 'Europe/Berlin';
Это сработало, SHOW timezone;
говорит мне, что это Europe/Berlin
.
Но то, что делает Postgres, все равно сохраняет дату и время как UTC, но со смещением +1 для Европы / Берлина, что на самом деле непроблема.
Я предполагал, что при чтении объекта datetime Postgres применяет смещение и возвращает европейское / берлинское время, но это не так.Он по-прежнему возвращает время UTC, так какой смысл менять часовой пояс?
Мне все еще нужно написать этот фильтр и вручную преобразовать его.
Я думаю, что должен быть простой способ применить смещение на уровне БД, или я ошибаюсь?
РЕДАКТИРОВАТЬ
Некоторая информация, которая может помочь, модель:
class User(UserMixin, Base):
__tablename__ = 'users'
date_added = Column(DateTime(timezone=True), nullable=False)
Как это выглядит в БД:
А вот пример того, как я загружаю его в jinja2 / html:
{{ tenant.date_added.strftime('%d.%m.%Y um %H:%M Uhr') }}