我正在将Django 2.1与USE_TZ = True
和TIME_ZONE = 'UTC'
一起使用。
这是我的模型DateTimeField:
create_date = models.DateTimeField(_('date created'), null=True, auto_now_add=True)
我正在尝试根据周数获取当前周的结果。我尝试了以下方法:
today = timezone.now()
current_week_num = today.isocalendar()[1]
week_results = MyModel.objects.filter(create_date__week=current_week_num).count()
当数据库中有记录时,此总是返回0。如果设置USE_TZ = False
,它可以正常工作。我正在使用MySql数据库。
有什么主意吗?
更新:
问题出在MySQL time_zone表为空!我不得不跑: mysql_tzinfo_to_sql / usr / share / zoneinfo 问题就解决了!
答案 0 :(得分:1)
Other databases
中的https://docs.djangoproject.com/en/2.1/topics/i18n/timezones/#database部分。
其他后端存储的日期时间没有时区信息。如果你 从USE_TZ = False切换到USE_TZ = True,您必须转换您的 从本地时间到UTC的数据-如果您的本地时间是不确定的 时间有夏令时。
答案 1 :(得分:1)
我终于找到了问题所在,基本上MySQL time_zone表是空的,需要填写!
运行以下命令后:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
问题消失了!