我正在营养师门户网站上开发一个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
您的浏览器将自动转换为本地时区