время Python + эквивалент timedelta - PullRequest
66 голосов
/ 18 марта 2009

Я пытаюсь сделать что-то вроде этого:

time() + timedelta(hours=1)

однако, Python не позволяет это , очевидно, по уважительной причине.

У кого-нибудь есть простое решение?

Связанный:

Ответы [ 5 ]

115 голосов
/ 18 марта 2009

Решение в ссылке, которую вы указали в вашем вопросе:

datetime.combine(date.today(), time()) + timedelta(hours=1)

Полный пример:

from datetime import date, datetime, time, timedelta

dt = datetime.combine(date.today(), time(23, 55)) + timedelta(minutes=30)
print dt.time()

Выход:

00:25:00
10 голосов
/ 27 июля 2011

Если стоит добавить еще один файл / зависимость в ваш проект, я только что написал крошечный маленький класс, который расширяет datetime.time с возможностью делать арифметику. Если вы идете после полуночи, это просто оборачивается:

>>> from nptime import nptime
>>> from datetime import timedelta
>>> afternoon = nptime(12, 24) + timedelta(days=1, minutes=36)
>>> afternoon
nptime(13, 0)
>>> str(afternoon)
'13:00:00'

Он доступен из PyPi как nptime («непедантичное время») или на GitHub: https://github.com/tgs/nptime

Документация на http://tgs.github.io/nptime/

6 голосов
/ 18 марта 2009

Это немного неприятно, но:

from datetime import datetime, timedelta

now = datetime.now().time()
# Just use January the first, 2000
d1 = datetime(2000, 1, 1, now.hour, now.minute, now.second)
d2 = d1 + timedelta(hours=1, minutes=23)
print d2.time()
4 голосов
/ 18 марта 2009

Временное решение:

t = time()
t2 = time(t.hour+1, t.minute, t.second, t.microsecond)

Вы также можете опустить микросекунды, если вам не нужна большая точность.

1 голос
/ 18 марта 2014

Вы можете изменить время () на сейчас (), чтобы оно работало

from datetime import datetime, timedelta
datetime.now() + timedelta(hours=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...