Django make_aware用法

时间:2017-02-22 18:26:50

标签: python django

Django docs说:

  

如果您尝试制作,则会引发pytz.NonExistentTimeError异常   在DST过渡期间value知道时间从未发生过   (进入DST时)。将is_dst设置为TrueFalse可以避免   将小时向后或向前移动1来例外   分别。例如,is_dst=True将改变不存在的   时间为2:30至1:30,is_dst=False将时间改为3:30。

所以我希望时间可以向前或向后移动,具体取决于is_dst的值。

但是从我的测试来看,时区正在转移,而不是时间。我误解了Django文档还是这个错误?

我测试了以下内容:

import pytz
import datetime
from django.utils.timezone import make_aware

tz = pytz.timezone('America/Sao_Paulo')
dt = datetime.datetime(2017, 10, 15 ,0 ,0)
print(make_aware(dt, tz))        # NonExistentTimeError
print(make_aware(dt, tz, True))  # 2017-10-15 00:00:00-02:00
print(make_aware(dt, tz, False)) # 2017-10-15 00:00:00-03:00

2017-10-15是DST将在America/Sao_Paulo时区开始,所以当时钟到达00:00时,它应该跳到01:00。 <{1}}方法返回的日期时间不存在。

0 个答案:

没有答案