将 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()
.
的参数
我在我的应用程序中使用时区感知对象,除了我有一个 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()
.