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

Compare Django TimeField into timezone aware datetime; compare naive time with timezone.now()

我在我的应用程序中使用时区感知对象,除了我有一个 TimeField 来表示一天中的通用时间的地方:

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

但是,在某些时候,我需要比较当前时间:timezone.now() 和 start_time,使用服务器的时区,看看时间是否已经过去了。

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

我正在使用 USE_TZ = True

这是一个简单的方法:

from django.utils.timezone import now, localtime

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

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

的参数