获取今天的日期和上一天之间的天数差异

问题描述:

我使用的是“datetime”模块,我试图计算出中两个日期之间的差异。下面是我使用的代码,与其他一些代码来的是获取对象sub.created_utc(一POSIX时间戳,或UNIX timestap)收到:获取今天的日期和上一天之间的天数差异

import datetime 

date = datetime.datetime.utcfromtimestamp(sub.created_utc); 
print(sub.created_utc); 
print(date); 
print(datetime.datetime.now() - date); 

这里是输出:

1440736746.0 
2015-08-28 04:39:06 
287 days, 16:47:41.560711 

我的问题是,我如何得到287 days的一部分(或只是287,我不介意)。我知道我可以使用正则表达式来提取它的那部分,但是有没有更好的可靠方法呢?

感谢您的帮助!如果你想让我提供完整的代码,我可以提供它,但不会认为这是必要的。

+0

http://stackoverflow.com/questions/441147/how-can-i-subtract-a-day-from-a -python-date?rq = 1 –

一旦你减去的日期,你会得到一个datetime.timedelta对象,你可以直接访问它的属性:

import datetime 

d1 = datetime.datetime.utcfromtimestamp(sub.created_utc) 
print(sub.created_utc) 
print(d1) 
result = datetime.datetime.utcnow() - d1 
print(result.days) 

Python语句不;结束; date是内置库的名称;所以最好不要在你的代码中使用它。

+0

谢谢,这工作。分号也是一种习惯,用于JS和PHP开发。似乎没有提出错误或缓慢的程序,所以它有多糟糕? –

+0

请参阅[Python风格指南](https://www.python.org/dev/peps/pep-0008/)。 –

+0

@MatthewMob:无关:你应该在这里使用'utcnow()',而不是'now()'。 – jfs

声明

datetime.datetime.now() - date 

产生一个timedelta对象。它有像daysseconds属性等

ANSWER

在Python datetime模块已经得到了一个名为timedelta功能。 MATHS和GREEK中的Delta意味着差异。例如:

a = 1 
b = 2 
delta = b-a 

所以回答你的问题,你必须写:

from datetime import date, timedelta 
d = date.today() - timedelta(days=delta_days) 

其中delta_days,你必须要减去天。

你不需要将它转换成datetime,你可以使用time.time()得到当前的Unix时间。它可以找到一个给定的Unix时间从过去以天为时间差:

import time 

DAY = 86400 # POSIX day - the exact value 
days_ago = (time.time() - sub.created_utc) // DAY