SQLAlchemy PostgreSQL读取时区为欧洲/柏林的时间戳

时间:2019-01-29 12:32:14

标签: python postgresql flask sqlalchemy timestamp-with-timezone

我的数据库中带有时区的时间戳记。这些总是在UTC中创建。

我需要向欧洲/柏林的用户显示时间。现在,我需要在所有地方使用JS或Jinja2修改时间以显示正确的时间。我觉得应该有一个全球解决方案,但是我找不到。

这是一个示例(模型):

new_user = User(date_added=datetime.today())

这是创建用户的代码:

db_session.execute("SET SESSION time_zone = 'Europe/Berlin'")

这在数据库中看起来像这样:

enter image description here

一旦我使用MySQL DB,并且正在使用它:

<<<

posgreSQL是否有类似的东西?

1 个答案:

答案 0 :(得分:0)

我认为您的数据库应该与时区无关。我通常在显示来自PostgreSQL数据库的日期时间之前调用此函数:

from pytz import timezone, UTC

def to_user_timezone(dt):
    """Convert a datetime object to the user's timezone.  If you need
    to convert a :class:`datetime.datetime` object at any time to the user's
    timezone (as returned by :func:`get_timezone` this function can be used).
    """
    if dt.tzinfo is None:
        dt = dt.replace(tzinfo=UTC)
    tzinfo = timezone('Europe/Berlin')
    return tzinfo.normalize(dt.astimezone(tzinfo))