2

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

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

4

1 回答 1

3

使用 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 }}SMS 模板中的参数来呈现用户的本地时间。

于 2012-04-26T02:00:11.940 回答