Django - 使用不同的时区



我正在营养师门户网站上开发一个Django应用程序,其中有来自不同国家的客户。现在,对于客户的预约,我需要根据营养师的时区向用户发送可用的时间段。现在的问题是,如果营养师的时区是亚洲/加尔各答,而客户的时区是美国/东部或其他时区.当客户请求插槽时,日期为 19 并且对应于营养师的时区 20th,那么我该如何管理这个,我可以在客户的时区覆盖营养师的一整天

如果日期相同,它可以正常工作,但如果有两个不同的日期,那么问题就来了。客户无法获取营养师的插槽,因为
根据营养师的时区日期是20日。

我认为您可以对documentation中提到的步骤采取类似的方法:

首先,从用户那里获取时区信息:

from pytz import country_timezones
class User(...):
    country_code = models.CharField(...)
    def get_tz_info(self):
       return country_timezones(self.country_code)[0]

然后,编写一个MIDDLEWARE来激活本地化时区:

import pytz
from django.utils import timezone
from django.utils.deprecation import MiddlewareMixin
class TimezoneMiddleware(MiddlewareMixin):
    def process_request(self, request):
        tzname = request.user.get_tz_info()
        if tzname:
            timezone.activate(pytz.timezone(tzname))
        else:
            timezone.deactivate()

您可以使用 UTC 时区 - 链接。你可以在你的 settings.py 中找到这个代码,如果没有把这个 -

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True

您的浏览器将自动转换为本地时区

相关内容

  • 没有找到相关文章

最新更新