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

43T*_*cts 2 python django datetime pytz

我在整个应用程序中使用时区感知对象,但我有一个TimeField来表示一天中的通用每日时间:

class MyModel(models.Modal):
   ...
   start_time = models.TimeField()
Run Code Online (Sandbox Code Playgroud)

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

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

我在用USE_TZ = True

Kev*_*nry 5

这是一个简单的方法:

from django.utils.timezone import now, localtime

if model.start_time >= localtime().time():
    # do stuff
Run Code Online (Sandbox Code Playgroud)

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