2013-03-18 210 views
-1

我得到起始日期是这样的:start_date1 = datetime.datetime.utcnow().replace(tzinfo=utc)如何在Django/python中减去这两个日期?

,并通过END_DATE作为这样的功能参数:

a(datetime.datetime.utcnow().replace(tzinfo=utc)) 

他们都是在start_date and end_date名明杆存储在数据库中。

我所试图做的是减法END_DATE和START_DATE获得时间:

start_date = [i.start_date for i in b ] 
    end_date = [i.end_date for i in b ] 

我会用这个来减去这两个日期:t = [i - j for i, j in zip(y, x)]

然而问题是起始日期日期和结束日期返回在unicodes中。我无法再将它们转换为日期时间格式。我该怎么办?

+0

如果你想在模板上显示不同,你可以使用'timesince'标签。 https://docs.djangoproject.com/en/dev/ref/templates/builtins/#timesince – Babu 2013-03-18 07:04:39

+0

Python拥有广泛的,可识别时区的[timedelta](http://docs.python.org/2/library/datetime。 html#timedelta-objects),这些功能都有详细记录。 – 2013-03-18 07:11:47

回答

0

从python中减去另一个日期时间对象的结果是timedelta对象。对象被定义为从时代(1970年1月1日的00:00:00)开始的一段时间。从另一个减去一个datetime无法返回新的datetime对象(因为它不能相对于Epoch),你会得到什么只是一段时间。这是一个timedelta

docs中有很多细节。

+0

我知道。但是,start_date和end_date从unicode中返回的数据库不能被减去。 – pynovice 2013-03-18 07:16:29

+0

然后,在计算之前,您需要将其转换回日期时间对象。你会想使用strptime函数 - http://docs.python.org/2/library/time.html#time.strptime – 2013-03-18 07:22:38

+0

http://stackoverflow.com/questions/466345/converting-string-into-约会时间 – 2013-03-18 07:30:24