datetime - ошибка или фича? - PullRequest
       0

datetime - ошибка или фича?

0 голосов
/ 21 января 2020
from datetime import datetime, timedelta
now = datetime.now()
then = datetime(2001, 1, 1)
delta = now-then
print(delta)
print(delta.days, delta.seconds)
print(delta.hours, delta.minutes)

выдает следующие ошибки:

6959 дней, 16: 09: 27.863408

6959 58167

AttributeError: 'datetime. объект timedelta не имеет атрибута 'hours'

AttributeError: объект datetime.timedelta не имеет атрибута 'minutes'

это ошибка или функция?

Ответы [ 2 ]

0 голосов
/ 21 января 2020

Функция: timedelta объекты имеют только .days, .seconds и .microseconds.

Я полагаю, это потому, что дни иногда бывают нерегулярными (например, из-за високосных секунд, и арифметика даты c может объяснить это), в то время как минуты и часы могут быть легко вычислены из секунд. Могло бы быть немного лучше, но все равно было бы несколько угловых случаев.

0 голосов
/ 21 января 2020

Вы можете проверить все атрибуты следующим образом:

>>> dir(delta)
['__abs__', '__add__', '__bool__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__radd__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__rsub__', '__rtruediv__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', 'days', 'max', 'microseconds', 'min', 'resolution', 'seconds', 'total_seconds']

Нет "часов" и "минут"

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