2017-02-10 133 views
0

我使用的时区感知对象在我的应用程序,除非我有一个TimeField表示一天中的通用,日时间:将Django TimeField与可识别时区的日期时间进行比较;比较天真的时间timezone.now()

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

然而,在某些点,我需要使用服务器的时区将当前时间:timezone.now()与start_time进行比较,以查看时间是否在任何给定日期过去。

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

我使用USE_TZ = True

+0

你试过localize()还是as_timezone()? – deweyredman

+0

另外,如何创建开始时间?作为一个天真的日期时间或时区知道吗? – deweyredman

+0

另外,你为什么不使用日期时间? – deweyredman

回答

1

这是一个简单的方法:

from django.utils.timezone import now, localtime 

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

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

另请注意,从Django 1.11开始,您可以简单地使用localtime().time()