Отображение времени и даты прибытия для пользователя

#python

#python

Вопрос:

Как мне добавить временную дельту, чтобы я мог добавить значение дельты к значению даты и времени и распечатать его? Например, расчетное время в пути: 6 минут: 15,0 Предполагаемая дата прибытия: 2018-11-30 Предполагаемое время прибытия: 05:30 утра

Но моя программа просто отображает это: Расчетное время в пути Часов: 3 минуты: 4 `

 from datetime import datetime,timedelta
import locale

mph = 0
miles = 0
def get_departure_time():
    while True:
        date_str = input("Estimated time of departure (HH:MM AM/PM):  ")
        try:
            depart_time = datetime.strptime(date_str, "%H:%M %p")
        except ValueError:
            print("Invalid date format. Try again.")
            continue
        return depart_time


def get_departure_date():
    while True:
        date_str = input("Estimated date of departure (YYYY-MM-DD): ")
        try:
            depart_date = datetime.strptime(date_str, "%Y-%m-%d")
        except ValueError:
            print("Invalid date format. Try again. ")
            continue
        return depart_date

def distance():
    while True:
        miles = input("Enter miles to be travelled: ")
        try:
            miles = int(miles)
            if miles <= 0:
                print("Enter a Number Greater than 0.n")
            else:
                return miles
        except ValueError:
            print("Format Error . Please Try againn")
            continue

def speed():
    while True:
        speed = input("Enter miles per hour: ")
        try:
            mph = int(speed)
            if mph <= 0:
                print("Enter a Number Greater than 0.n")
            else:
                return mph
        except ValueError:
            print("Format Error . Please Try againn")
            continue
        pass

def travel_calculations(miles,mph):
    hours = int(miles/mph)
    minutes = int(((miles/mph)-hours)*60)
    time_travelled = timedelta(hours=hours, minutes=minutes)



    print("nnEstimated travel time")
    print("Hours: ", hours)
    print("Minutes: ", minutes)


def main():
    print("Arrival Time Estimatorn")
    depart_time = get_departure_time()
    depart_date = get_departure_date()

    miles = distance()
    mph = speed()
    travel_calculations(miles,mph)
    return


if __name__ == "__main__":
    main()

`
 

Комментарии:

1. Вы получаете depart_date и depart_time , но не используете их ни для чего. Вы пробовали использовать их в сочетании со своими timedelta ?

2. Я новичок в python, не могли бы вы привести мне пример?

Ответ №1:

Объедините depart_time и depart_date с одним datetime объектом в вашей main() функции и предоставьте его travel_calculations()

 def main():
    ...
    departure = depart_date.replace(hour=depart_time.hour, minute=depart_time.minute)
    ...
    travel_calculations(miles, mph, departure)
 

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

Затем, в travel_calculations() , добавьте свой timedelta к datetime объекту

 def travel_calculations(miles, mph, departure):
    ...
    eta = departure   time_travelled
 

Затем в переменной доступно расчетное время прибытия eta .