Django TruncMinute 显示时区

Django TruncMinute show timezone

我创建了一个 Django ORM 查询并使用 TruncMinute 将秒设置为零。不幸的是,当我 运行 我的查询结果显示我的时区。我将我的结果附加到我的查询中,我还显示了我想要的输出。

我的查询:

MyResul=MyTable.objects.all()
        .filter(time__range=(start_date, end_date))
        .annotate(time_stamp=TruncMinute('time'))
        .values('data', 'time_stamp')

我的结果:

  data            time_stamp
   1     2017-01-04 18:56:00+00:00

我的尝试:

   .annotate(time_stamp=TruncMinute('time', tzinfo=None))

我想要的输出:

 data            time_stamp
       1     2017-01-04 18:56:00

假设您在数据库中将 time 字段定义为 DateTimeField()。因此,您的查询结果将是,

<QuerySet [{'data': 1, 'time_stamp': datetime.datetime(2018, 2, 24, 13, 36, 21, 942863, tzinfo=<UTC>)}]><br>

time_stamp 键持有属于 python 的 datetime 对象的值。因此,如果您试图在任何地方显示数据(HTML、Json 等),则必须对其进行格式化(如果我没记错的话)。

所以我的答案是,迭代 MyResulformat datetime object

temp_result = MyTable.objects.filter(time__range=(start_date, end_date)).values('data', 'time')
MyResul = []
for result in temp_result:
    MyResul.append({
        "data": result['data'],
        "time_stamp": result['time'].strftime('%Y-%d-%m %H:%M:00')
    })
#use 'MyResul'