我正在尝试从表中检索最后 n 小时的行并在给定的时区打印它们的日期时间,给出打印日期时要使用的时区,我正在尝试使用 activate 使 django 返回具有正确时区的日期时间但是它以 UTC 格式返回日期。
这是我当前的代码:
min_time = datetime.datetime.now(link.monitor.timezone) - datetime.timedelta(hours=period)
timezone.activate(link.monitor.timezone)
rows = TraceHttp.objects.values_list('time', 'elapsed').filter(time__gt=min_time,link_id=link_id,elapsed__gt=0)
array = []
for row in rows:
array.append((row[0].astimezone(link.monitor.timezone),row[1]))
我想避免使用 astimezone 函数并让 Django 为我执行此操作,有时我会错过激活函数吗?
编辑
这是我的模型,您可以看到要显示的时区保存在“监视器”模型上:
class Link(models.Model):
...
monitor = models.ForeignKey(Monitor)
...
class Monitor(models.Model):
...
timezone = TimeZoneField(default='Europe/London')
class TraceHttp(models.Model):
link = models.ForeignKey(Link)
time = models.DateTimeField()
elapsed = models.FloatField()