【问题标题】:Django - Working With different TimezonesDjango - 使用不同的时区
【发布时间】:2019-06-21 05:05:35
【问题描述】:

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

如果日期相同,但如果有两个不同的日期,问题就来了。客户无法获取营养师的位置,因为
根据营养师的时区日期是 20 日。

【问题讨论】:

标签: django timezone


【解决方案1】:

我认为您可以对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()

【讨论】:

  • 谢谢我会调查这个
【解决方案2】:

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

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

您的浏览器会自动转换为当地时区

【讨论】:

    猜你喜欢
    • 2021-10-28
    • 2018-04-18
    • 2020-07-17
    • 2011-08-27
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多