【发布时间】:2019-06-25 21:26:25
【问题描述】:
首先我知道有很多关于这个的线程,我可以使用那里的解决方案,f.e.编写一个 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') }}
【问题讨论】:
标签: postgresql timestamp-with-timezone