Как сложить время в python
Перейти к содержимому

Как сложить время в python

  • автор:

Как прибавить к времени 2 часа

Есть формат времени часы и минуты например 08:00 мне нужно добавить 2 часа получится 10:00.
Я использую функцию timedelta(minutes=120)
При сложении актуального времени и нужного получается такая ошибка time = time_ + timedelta(hours=2)

min = time_ + timedelta(hours=2)

TypeError: can only concatenate str (not «datetime.timedelta») to str

Если сделать по другому то нужно привести к формату часы и минуты, а я не знаю как сделать

Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

К дате прибавить 3 часа
Доброго дня! Подскажите, как к дате в формате 22.02.2022 16:30 прибавить 3 часа? дата введена в.

Как вычесть два часа из текущего времени
Получаю текущее время $time=date(‘Y-m-d H:i:s’); А как вычесть из текущего времени 2 часа и.

Как прибавить/отнять к времени смещение?
В базе дата и время хранятся в разных полях. Если просто прибавить/вычесть время, то возможен.

Как в DataTime к одному времени прибавить другое?
Т.е: Есть нынешнее время: 12:24 (ну к примеру) К нему прибавить надо 3 часа и 53 минуты.

Регистрация: 04.05.2020
Сообщений: 13

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

TypeError: can only concatenate str (not «datetime.timedelta») to str

Мне кажется, Вы где-то конвертировали time_ в строку. Никакого форматирования до непосредственного вывода переменным типа datetime и им подобным не требуется.

1 2 3 4 5 6 7 8
import datetime x = datetime.datetime.now() y = x + datetime.timedelta(hours=2) print(x.strftime("%H %M")) print(y.strftime("%H %M"))

Регистрация: 30.10.2016
Сообщений: 53
А если у меня строка со значением времени ?
Регистрация: 04.05.2020
Сообщений: 13

ЦитатаСообщение от igoorrr Посмотреть сообщение

А если у меня строка со значением времени ?

Ну Вы сами как думаете?

Что получится если трех слонов сложить с числом 502?

1) Если мы число 502 преобразуем в строку «пятьсот два» и сложим со строкой «три слона» то у нас получится «три слона пятьсот два».

2) Если мы трех слонов преобразуем в число 3, то при складывании 502 и 3 мы получим 505.

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

Если Вам нужно время — работайте со временем.

Регистрация: 13.04.2015
Сообщений: 8
igoorrr, Ну что? Получилось решить?

Эксперт Python

5416 / 3840 / 1214
Регистрация: 28.10.2013
Сообщений: 9,554
Записей в блоге: 1

Лучший ответ

Сообщение было отмечено zss как решение

Решение

ЦитатаСообщение от Islammmalsi Посмотреть сообщение

Получилось решить?

Сам как думаешь? Человек, наверно, открыл документацию и прочитал.
А ты?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
>>> from datetime import datetime,timedelta >>> dt = datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p') >>> dt datetime.datetime(2005, 6, 1, 13, 33) >>> dt=dt + timedelta(hours=2) >>> dt datetime.datetime(2005, 6, 1, 15, 33) >>> dt.strftime("%Y-%m-%d %H:%M:%S") '2005-06-01 15:33:00' >>> dt.strftime("%x %X") '06/01/05 15:33:00' >>> dt.strftime("%c") 'Wed Jun 1 15:33:00 2005' >>> >>>

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Как получить свой часовой пояс и прибавить его к дате и времени
Всем доброго дня! Подскажите, как получить свой часовой пояс и прибавить его к дате и времени? В.

Как прибавить один час когда часы идут в реальном времени?
Вот сам код часов. private void timer1_Tick(object sender, EventArgs e) < .

Как схлопнуть 10-сек интервалы времени (они по порядку, но с пропусками) в группы в рамках 1 минуты, каждого часа, дня?
Здравствуйте, возможно кто-то сталкивался с таким квестом. Имеются исторические данные.

Округление времени до часа
В общем задумка такая,в игре сделать травму и каждый час травмы отнимает 10% урона. К примру у.

Zoosk 2 часа потерянного времени
Через ютуб нашел один из бесплатных СЗ, попробовал зайти обычным браузером Повторил через час и.

Сравнение времени : часа и минуты
Всем привет.Решаю одну интерсную задачу. Подскажите,пож-та. Есть 3 времени 03:23 03:24 05:12.

Как сложить время, которое у меня в переменной форматом 00:00:00?

Путем парсинга у меня в переменной оказались значения времени, которые мне нужно сложить друг с другом, чтобы получилось общее время.
Скриншот фрагмента кода удалён модератором.

Могу приложить код, но думаю, что в этом нет особо смысла. Все это время в одной переменной:
lst = []
print(lst)
tim = ‘\n’.join(lst)
print(tim)
(Просто, если будет недопонимание почему так отображается в консоле решил приложить как оно выводит)

  • Вопрос задан более года назад
  • 131 просмотр

1 комментарий

Простой 1 комментарий

TosterModerator

Модератор @TosterModerator

Запрещено размещать фрагменты кода в виде скриншотов. Это относится к любой структурированной текстовой информации.
Необходимо заменить текстом, обернутым тэгом code. См.п.3.8 Регламента.

Решения вопроса 1

import datetime total_time = datetime.timedelta() lst = ["00:33:33", "00:23:34", "01:32:21"] for time in lst: hours, minutes, seconds = time.split(":") hours, minutes, seconds = int(hours), int(minutes), int(seconds) total_time += datetime.timedelta(hours=hours, minutes=minutes, seconds=seconds) print(total_time)

Учебник Python/Дата и время

вариант №2 прочитать из строки (не работает в python 2.4.3, там надо использовать модуль time):

datetime.strptime( "2009", "%Y" ) datetime.strptime( "2009-11-12 23:18:53", "%Y-%m-%d %H:%M:%S" )

Операции сложения (timedelta) править

>>> from datetime import datetime, timedelta >>> a = datetime(2010, 12, 12) >>> b = timedelta(days=1, hours=2, seconds=15) >>> str(a) '2010-12-12 00:00:00' >>> str(a+b) '2010-12-13 02:00:15'

time править

Тип для работы с unixtime.

>>> print time.time() 1296734473.66
>>> time.localtime(1360250344) time.struct_time(tm_year=2013, tm_mon=2, tm_mday=7, tm_hour=19, tm_min=19, tm_sec=4, tm_wday=3, tm_yday=38, tm_isdst=0)

Конвертировать datetime в time:

print time.mktime(datetime.now().timetuple())
time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(1360250344))

Сложить datetime.time с datetime.time в python

Доброго времени суток! Прошу подсказать как проще всего сложить переменные tm1 и tm2 в следующем коде:

from datetime import datetime, time tm1 = time(0,30) tm2 = time(1,30) print(tm1 + tm2) # TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.time' 

Отслеживать
задан 5 янв 2020 в 20:02
1 1 1 серебряный знак 1 1 бронзовый знак
а что вы хотите получить? объекты time — это не промежуток времени, а время суток.
5 янв 2020 в 20:35

Вам вероятно нужен объект timedelta – его можно складывать и вычитать друг с другом и с объектами date/time/datetime.

5 янв 2020 в 20:39

Задача получить разницу между временами. На данный момент нашел только одно решение – через timedelta, но возможно подскажите более удобный способ?

5 янв 2020 в 20:40

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Можно использовать timedelta

from datetime import datetime, time, timedelta tm3 = timedelta(hours=0, minutes=30) tm4 = timedelta(hours=1, minutes=30) print(tm3 + tm4) # 2:00:00 

Отслеживать
ответ дан 5 янв 2020 в 20:41
1,606 1 1 золотой знак 5 5 серебряных знаков 14 14 бронзовых знаков
Именно так и делаю, другого варианта получается нет?
5 янв 2020 в 20:41
Если результат еще необходимо проверить (tm3 + tm4) > 1h, то аналогично сравнивать с timedelta?
5 янв 2020 в 20:42

@pyok чтобы «по-питонски» скорее всего нет. Если только влоб, сплитовать даты на ч, м, с, складывать и форматировать

5 янв 2020 в 20:43
Понял, спасибо большое.
5 янв 2020 в 20:45
Сравнивать с дельтами тоже, да
5 янв 2020 в 20:45

Если вам нужно сложить два объекта именно типа time , можно использовать вот такой самописный вариант функции сложения времени:

from datetime import time tm1 = time(0,30) tm2 = time(1,30) def sum_time(time1, time2): th1, tm1, ts1 = time1.hour, time1.minute, time1.second th2, tm2, ts2 = time2.hour, time2.minute, time2.second th3, tm3, ts3 = th1 + th2, tm1 + tm2, ts1 + ts2 tm3, ts3 = tm3 + ts3 // 60, ts3 % 60 th3, tm3 = th3 + tm3 // 60, tm3 % 60 # На всякий случай. Вдруг больше дня получится =) th3 = th3 % 24 return time(th3, tm3, ts3) print(tm1, tm2) print(sum_time(tm1, tm2)) 
00:30:00 01:30:00 02:00:00 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *