Добавление времени пользователя в Python 3 - PullRequest
0 голосов
/ 12 декабря 2018

Привет Всем, у меня есть гугл, но я не нашел ответ.По сути, я хочу добавить введенное пользователем время к текущему времени.
Это всего лишь небольшой проект, над которым я работаю во время изучения Python.
Так что, если текущее время равно 17:16, а пользователь хочет добавить 1hr 30 к этому.как бы я это сделал.
Вот что у меня есть:

import datetime

flex = input("Enter your flex amount in HHMM:")

flex = flex[0]+flex[1]+"-"+flex[2]+flex[3]

time = datetime.datetime.now().strftime("%H-%M")

balance = time+flex

print(time)
print(flex)
print(balance)

Я сейчас попробовал

import datetime

flex = input("Enter your flex amount in HHMM:")
time = datetime.datetime.now().strftime("%H-%M")

flex = flex[0]+flex[1]+"-"+flex[2]+flex[3]
time = time[0]+time[1]+"-"+time[2]+time[3]

balance = datetime.timedelta(hours=int(time[0]+time[1]), 
minutes=int(time[2]+time[3]) + 
datetime.timedelta(hours=int(flex[0]+flex[1]), 
minutes=int(flex[2]+flex[3]))

Но теперь он жаловался на ожидание целого числа.но если я изменю его, не будет целое число, которое не победит цель моего желания добавить как время.

Спасибо

Я заставил его работать, используя ответ.Вот как это выглядит сейчас, спасибо приятель.

from datetime import timedelta as td
import datetime as da

#flex = input("Enter your flex amount in HHMM:")
flex = "0134"
now = da.datetime.now()
user_hours = int(flex[:2])
user_minute = int(flex[2:5])
delay = td(hours=user_hours, minutes=user_minute)

balance = da.datetime.now()+delay

print("Lunch: " +str(lunch))
print("Time when balance at 00:00 : " +str(balance))
print("Now: " +str(now))

Ответы [ 3 ]

0 голосов
/ 12 декабря 2018

Простое использование timedelta создает смещение, обозначенное объектом timedelta, и добавляет его к вашему объекту времени (работает так же с датой и датой / временем).

from datetime import timedelta, datetime

actual_time = datetime.now()
user_hours = int(flex[:3])
user_minute = int(flex[2:5])
delay = timedelta(hours=user_hours, minutes=user_minute)

print(datetime.now()+delay)
0 голосов
/ 12 декабря 2018

Круто, поэтому при tring

balance = datetime.timedelta (часы = int (время [0] + время [1]), минуты = int (время [2] + время [3]) + datetime.timedelta (часы = int (flex [0] + flex [1]), минуты = int (flex [2] + flex [3]))

жалуется, что ожидает интергер, а не дельту времени

0 голосов
/ 12 декабря 2018

Так что, если текущее время 17:16 и пользователь хочет добавить 1 час 30 к этому.как бы я это сделал.


Вы можете использовать timedelta , то есть:

new_time = datetime.datetime.now() + datetime.timedelta(hours=1, minutes=30) # or simply minutes=90, etc...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...