Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-在不同时区工作_Django_Timezone - Fatal编程技术网

Django-在不同时区工作

Django-在不同时区工作,django,timezone,Django,Timezone,我正在营养师门户网站上开发Django应用程序,其中有来自不同国家的客户。现在,对于客户预约,我需要根据营养师的时区向用户发送可用的时间段。现在的问题是,如果营养师的时区是亚洲/加尔各答,而客户的时区是美国/东部或其他。当客户要求提供时段时,有一个日期19,并且符合营养师的时区20,那么我如何管理这一点,以便我可以在客户的时区覆盖营养师的一整天 如果日期相同,效果很好,但如果有两个不同的日期,问题就会出现。客户无法获得营养师的职位,因为 根据营养师的时区,日期是20号。您可以使用UTC时区-。您

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

如果日期相同,效果很好,但如果有两个不同的日期,问题就会出现。客户无法获得营养师的职位,因为

根据营养师的时区,日期是20号。

您可以使用UTC时区-。您可以在settings.py中找到此代码,如果没有,请将其放入-

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

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

我认为您可以采取类似的方法来执行以下步骤:

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

from pytz import country_timezones

class User(...):
    country_code = models.CharField(...)

    def get_tz_info(self):
       return country_timezones(self.country_code)[0]
然后,写入激活本地化时区的命令:

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()

Thanx我将研究这个检查时区的最新版本,这里是一个有用的链接,让我们看看这个。您需要显示您的模型和用于获取插槽的查询。基本上,在运行查询之前,您需要将当前日期时间(例如
now()
)转换为正确的时区。