Django将记录集中的所有日期转换为时区感知

时间:2014-01-17 11:01:03

标签: python django django-timezone

我有一个使用mysql作为db的django模型,我正在使用时区支持。我的模型中有一个有日期的字段。

由于mysql无法在datefield中存储时区信息,因此我将时区偏移存储在另一个字段中。当我查询数据库时,我想使用存储在数据库中的偏移量将所有日期转换为时区感知。

您可以假设我的模型如下所示:

class Item(models.Model):
    pubDate = models.DateTimeField(verbose_name="publish date")
    pubDate_tz = models.IntegerField()

我的查询目前是:

items = Item.objects.all().filter(channel__category = category, pubDate__range=[today_date, tomorrow_date]).order_by('-pubDate')

但在我的模板中,我希望使用item.pubDate自动转换为我的本地时区。

感谢。

1 个答案:

答案 0 :(得分:0)

尝试在查询中使用timezone.make_aware吗?

这里的文档中的信息 https://docs.djangoproject.com/en/dev/ref/utils/#django.utils.timezone.make_aware https://docs.djangoproject.com/en/dev/topics/i18n/timezones/

timezone_aware转换的基本示例:

today = timezone.now()

today_aware = timezone.make_aware(time_ago, timezone.get_default_timezone())

所以你将timezone.now替换为item.pudbate查询

如果时区始终相同,您可以使用第二个参数(timezone.get_default_timezone)设置时区,如果时区更改,您应该能够将其设置为数据库中的值