我使用arrow
处理日期,发现我不知道如何自然地获得两个日期之间的秒数:
>>> import arrow
>>> first = arrow.get('2019-03-06')
>>> second = arrow.get('2019-02-06')
>>> (first-second).days
28
>>> (first-second).seconds
0
在上面的示例中,看起来.days
给出了预期的输出,但是.seconds
给出了“处于秒级”的秒数,即仅以秒为单位。这意味着最大数量为60
。
这是不正确的,
>>> (arrow.now()-first).seconds
70223
70000秒大约是19个小时,这是从最后一个午夜(今天开始)到现在(大约20:30)之间的正确小时数。
所以我迷失了.seconds
真正提供的东西。
答案 0 :(得分:1)
seconds属性仅反映第一天和第二天之间的差异(如果它们在一天之内)。如果天数超过1天,则days属性将增加1,seconds属性将重置为零。如果要获取它们之间的总秒数,请调用timedelta的total_seconds()方法。差异见下文
import arrow
first = arrow.get('2019-03-06 02:00:00')
second = arrow.get('2019-03-05 01:00:00')
d0 = first - second
d1 = d0.days
d2 = d0.seconds
d3 = d0.total_seconds()
print('total days: {}'.format(d1))
print('seconds within day: {}'.format(d2))
print('total seconds: {}'.format(d3))
# total days: 1
# seconds within day: 3600
# total seconds: 90000.0
答案 1 :(得分:0)
.seconds
是一天中的秒数
.total_seconds()
是将整个时间增量转换为秒数
例如:
first = arrow.get('2019-03-06 02:00:00')
second = arrow.get('2019-03-05 01:00:00')
(first - second).seconds
> 3600
(first - second).total_seconds()
> 90000.0
因此,少于一天的差异
.seconds & .total_seconds()
将会是相同的。