如何使用箭头获取两个日期之间的秒数?

时间:2019-03-06 19:35:01

标签: python python-arrow

我使用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真正提供的东西。

2 个答案:

答案 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)

Documentation for datetime

  

.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()将会是相同的。