将Django TimeField与时区感知日期时间进行比较;将天真时间与timezone.now()进行比较

时间:2017-02-10 00:42:02

标签: python django datetime pytz

我在我的应用中使用时区感知对象,除非我有一个TimeField代表一般的每日时段:

class MyModel(models.Modal):
   ...
   start_time = models.TimeField()

但是,在某些时候,我需要使用服务器的时区将当前时间timezone.now()与start_time进行比较,以查看任何一天的时间是否过去。

如何将start_time转换为可与timezone.now()进行比较的时区感知日期时间对象?

我正在使用USE_TZ = True

1 个答案:

答案 0 :(得分:1)

这是一种简单的方法:

from django.utils.timezone import now, localtime

if model.start_time >= localtime(now()).time():
    # do stuff

请注意,localtime()使用当前时区,如果未明确设置,则为默认时区。如果那不是你想要的,你可以指定所需的时区作为localtime()的参数。

另请注意,从Django 1.11开始,您只需使用localtime().time()