django - 具有用户时区的日期时间

时间:2012-04-25 23:31:05

标签: django timezone

我试图建立一个我最终会通过短信发送的文字。 blurb包含以UTC为时区的日期时间对象的文本,但需要将文本本地化为用户的时区。我将用户的时区存储在db。

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

1 个答案:

答案 0 :(得分:2)

使用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)

您可以使用SMS模板中的{{ datatime }}参数来呈现用户的本地时间。