>> import datetime >>> f-6ren">
gpt4 book ai didi

django - 替换 "tzinfo"并用localtime打印修改六分钟

转载 作者:行者123 更新时间:2023-12-04 00:06:45 25 4
gpt4 key购买 nike

我正在创建一个没有时区的 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>)

注意:这个想法是分两个阶段进行的。首先,我想在 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)

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

Not naive datetime (tzinfo is already set)

最佳答案

使用 timezone.localize 代替 datetime.replace

>>> test = datetime.datetime(2016, 9, 28, 10, 10, 10)
>>> test = pytz.timezone('America/Sao_Paulo').localize(test)
datetime.datetime(2016, 9, 28, 10, 10, 10, tzinfo=<DstTzInfo 'America/Sao_Paulo' BRT-1 day, 21:00:00 STD>)

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

引用:

  1. pytz.localize vs datetime.replace

  2. datetime object, when rendered to Django template, was always 6 minutes off

关于django - 替换 "tzinfo"并用localtime打印修改六分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39759041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com