tzlocal将UTC作为本地时区

2024-10-04 11:34:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难让Django在本地timzeone中呈现datetime字段。在

在设置.py有:

TIME_ZONE = 'UTC'
USE_TZ = True
USE_L10N = True

在我的模型中:

^{pr2}$

Created在MySQL中存储为UTC时间对象。在

如果在填充创建的字段后数据库中有“2016-11-08 01:25:15”,当我呈现我的模板时,我希望它被翻译成客户端的本地时间(我在东部时间,所以我希望它是“2016-11-07 20:25:15”。在

但是,无论我使用什么标记(例如{date_obg|localtime}}),日期都不会呈现为我的本地时间。在

我安装了tzlocal,当我在视图中运行get_localzone()时,它会显示“UTC”作为输出。在

此外,如果我尝试这样做(将创建的字段从UTC转换为本地时区变量):

lctz = get_localzone()
self.created.replace(tzinfo=pytz.utc).astimezone('lctz')
>>>>2016-11-08 01:25:15

创建日期与数据库中的日期相同(以UTC为单位)。在

这是因为我的googleappengine实例的本地时区是UTC吗?如何让应用程序模板在用户/客户端时区中呈现?在


Tags: djangopy模板数据库true客户端getdatetime
1条回答
网友
1楼 · 发布于 2024-10-04 11:34:27

我的激活时区的中间件如下所示:

import pytz
from django.utils import timezone

class get_user_timezone(object):
    def process_request(self, request):
        if request.user.is_authenticated():
            user_timezone = 
                 pytz.timezone(request.user.userprofile.iana_timezone)

            if user_timezone:
                 timezone.activate(user_timezone)
            else:
                 timezone.deactivate()

相关问题 更多 >