Как узнать количество секунд между двумя датами со стрелкой? - PullRequest
1 голос
/ 06 марта 2019

Я использую 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 ]

1 голос
/ 06 марта 2019

Свойство секунд отражает разницу между первым и вторым, только если они находятся в пределах одного дня. Если дни больше 1 дня, свойство days получает приращение на единицу, а свойство секунд сбрасывается в ноль. Если вы хотите получить общее количество секунд между ними, вызовите метод total_seconds () timedelta. Ниже приведены различия

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
0 голосов
/ 06 марта 2019

Документация на дату и время

.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() будет идентична.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...