为什么timedelta函数在日期时间相隔完美天数时会返回0秒?

时间:2015-05-20 16:28:31

标签: python python-2.7 datetime timedelta

end_time = datetime.datetime.utcnow() start_time = end_time - datetime.timedelta(days=14)

(end_time - start_time).seconds = 0 (end_time - start_time).days = 14

奇怪的是,如果我从时间增量中加/减一秒,我会得到预期的响应。

3 个答案:

答案 0 :(得分:2)

时差为14天0秒。

echo "9714917" | /third/party/bin/program 

给出:

diff = end_time - start_time
diff

一秒钟:

datetime.timedelta(14)

现在:

s1 = datetime.timedelta(seconds=1)

给出:

diff - s1

这是13天和86399秒。

答案 1 :(得分:1)

如果您需要以秒为单位的差异,请调用timedelta的total_seconds()

https://docs.python.org/2/library/datetime.html#datetime.timedelta.total_seconds

答案 2 :(得分:0)

我不确定你在做什么,但如果你使用

start_time = end_time - datetime.timedelta(days=14, seconds=20)

并输入

(end_time - start_time).seconds

你的答案会得到20分 另外,为了澄清它返回0的原因,如果使用

,则返回timedelta对象
(end_time - start_time) 

其中seconds属性为0。

你不能使用

(end_time - start_time).seconds = 20 

因为它是一个只读属性。 如果您想获得总秒数,可以使用

(end_time - start_time).total_seconds()