相关疑难解决方法(0)

如何获取系统时区设置并将其传递给pytz.timezone?

我们可以使用time.tzname获取本地时区名称,但该名称与之不兼容pytz.timezone.

实际上,返回的名称time.tzname含糊不清.此方法('CST', 'CST')在我的系统中返回,但"CST"可以指示四个时区:

  • 中部时区(北美) - 在北美的中部时区观察
  • 中国标准时间
  • 中原标准时间 - "中原标准时间"一词现在在台湾很少使用
  • 澳大利亚中央标准时间(ACST)

python timezone pytz

51
推荐指数
4
解决办法
6万
查看次数

替换“ tzinfo”,并用本地时间打印六分钟

我正在创建一个DataTimeField没有时区。不久,我将“手动”编辑此TZ,然后要求读取本地TZ的值。看到最终结果修改了六分钟!

逻辑:

>>> import datetime
>>> from django.utils import timezone
>>> test = datetime.datetime(2016, 9, 28, 10, 10, 10)
datetime.datetime(2016, 9, 28, 10, 10, 10)

>>> test = teste.replace(tzinfo=pytz.timezone('America/Sao_Paulo'))
datetime.datetime(2016, 9, 28, 10, 10, 10, tzinfo=<DstTzInfo 'America/Sao_Paulo' LMT-1 day, 20:54:00 STD>)

>>> timezone.activate(pytz.timezone('America/Sao_Paulo'))
>>> timezone.localtime(test)
datetime.datetime(2016, 9, 28, 10, 16, 10, tzinfo=<DstTzInfo 'America/Sao_Paulo' BRT-1 day, 21:00:00 STD>)
Run Code Online (Sandbox Code Playgroud)

注意:此想法是在两个阶段发生的。首先,我想在TimeZone创作中保持领先地位。然后,我想向用户显示用户的TimeZone。在这种情况下,两个用户都是同一地区。

对不起我的英语


遵循@ user6897474的响应并将其付诸实践,我得到了以下解决方案:

在保存之前,我要获取POST和serializabel文件的日期时间,请执行以下操作:

class CheckControllerSerializer(serializers.ModelSerializer):
    def create(self, validated_data):
        datetime = validated_data['datetime'].replace(tzinfo=None)
        validated_data['datetime'] = pytz.timezone('America/Sao_Paulo').localize(datetime)

        return super(CheckControllerSerializer, self).create(validated_data)
Run Code Online (Sandbox Code Playgroud)

替换tzinfo = None,我保证您不会遇到以下错误的问题:

不是幼稚的日期时间(已经设置了tzinfo)

django django-models python-3.x python-datetime django-timezone

1
推荐指数
1
解决办法
1052
查看次数