Как добавить определенное время к дате? - PullRequest
0 голосов
/ 22 апреля 2019

Я хочу добавить часы к datetime и использовать:

date = date_object + datetime.timedelta(hours=6)

Теперь я хочу добавить время:
time='-7:00' (строка) плюс 4 часа.

Я пытался hours=time+4, но это не работает. Я думаю, что мне нужно int строка как int(time), но это тоже не работает.

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

Лучше вы будете анализировать свое время, как показано ниже, и получите доступ к атрибутам даты и времени для получения компонентов времени из проанализированного объекта даты и времени

 input_time = datetime.strptime(yourtimestring,'yourtimeformat')
 input_seconds = input_time.second # for seconds
 input_minutes = input_time.minute # for minutes
 input_hours = input_time.hour     # for hours
 # Usage: input_time = datetime.strptime("07:00","%M:%S")

Если у вас есть метод datetime.timedelta для составления продолжительности.

new_time = initial_datetime + datetime.timedelta(hours=input_hours,minutes=input_minutes,seconds=input_seconds)

См. Документы strptime и формат даты и времени

1 голос
/ 22 апреля 2019

Вам необходимо преобразовать объект datetime, чтобы добавить timedelta к вашему текущему времени, а затем вернуть его обратно только к временной части.

Использование date.today() просто использует произвольную текущую дату и устанавливает время, которое вы указали. Это позволяет добавлять дни и сбрасывать часы на 00: 00.

dt.time() распечатывает результат, который вы искали.

from datetime import date, datetime, time, timedelta

dt = datetime.combine(date.today(), time(7, 00)) + timedelta(hours=4)
print dt.time()

Edit: Чтобы получить из строки time='7:00' то, что вы можете разбить на двоеточие, а затем сослаться на каждую.

this_time = this_time.split(':')   # make it a list split at :
this_hour = this_time[0]
this_min = this_time[1]

Редактировать 2: Чтобы собрать все это вместе, тогда:

from datetime import date, datetime, time, timedelta

this_time = '7:00'

this_time = this_time.split(':')   # make it a list split at :
this_hour = int(this_time[0])
this_min = int(this_time[1])

dt = datetime.combine(date.today(), time(this_hour, this_min)) + timedelta(hours=4)
print dt.time()

Если у вас уже есть полная дата для использования, как указано в комментариях, вы должны преобразовать ее в дату и время, используя strptime . Я думаю, что другой ответ описывает, как его использовать, поэтому я не собираюсь приводить пример.

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