tzlocal给出UTC作为我的本地时区



我在让Django在我的本地时区中呈现datetime字段时遇到了很多麻烦。

Settings.py有:

TIME_ZONE = 'UTC'
USE_TZ = True
USE_L10N = True

在我的模型中,我有:

class ExportRecord(models.Model):
    [...]
    created = models.DateTimeField(auto_now_add=True)
    def save(self, *args, **kwargs):
        [...]
        self.created = timezone.now()

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

如果我有"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)。

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

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

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()

相关内容

  • 没有找到相关文章

最新更新