【问题标题】:django - str of datetime with user's timezonedjango - 带有用户时区的日期时间 str
【发布时间】:2012-04-25 23:31:04
【问题描述】:

我正在尝试构建一个我最终会在 SMS 消息中发送的文本简介。简介包含以 UTC 作为时区的日期时间对象的文本,但需要将文本本地化为用户的时区。我将用户的时区存储在数据库中。

我知道我可以使用 timezone.activate() 和 timezone.deactivate() 来更改当前时区,但我不知道这是否是最好的做法,因为我想要的只是日期时间的文本在用户的本地时区打印。我不知道更改当前时区是否会产生不必要的系统后果,即使只是很短的时间。

【问题讨论】:

    标签: django timezone


    【解决方案1】:

    使用 timezone.activate() 激活时区只会影响当前请求,因此真的没有“不需要的系统后果”需要担心。

    通过在中间件中激活时区:

    from django.utils import timezone
    
    class TimezoneMiddleware(object):
        def process_request(self, request):
    
            if request.user.is_authenticated():
                timezone.activate(request.user.get_profile().timezone)
    

    您将能够通过在短信模板中使用{{ datatime }} 参数来呈现用户的本地时间。

    【讨论】:

      猜你喜欢
      • 2012-09-17
      • 2021-08-02
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多