Python - ввод времени и сложение / вычитание - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь принять пользовательский ввод в течение 24 часов, а затем выполнить вычисления (добавляя часы, вычитая часы и т. Д.) К этим входам.У меня есть что-то следующее:

# get start time
start_t = int(input("Start time: "))
print(start_t)

# get stop time
stop_t = int(input("Stop time: "))
print(stop_t)

Проблемы:

  1. , когда я печатаю время, если есть начальный ноль (например, 0200),он печатает 200.

  2. Когда я пытаюсь делать какие-либо сложения или вычитания, он отображается неправильно.Например, если я ввожу время остановки в 2200, и я хочу, чтобы вычисленное время было stop_t - 8 (часы), оно отображает 0.Я бы хотел, чтобы он отображал 0000.Еще одна вещь, которую я заметил, если я сделал stop_t - 8, он отображает 2192.Я должен сделать stop_t - 800, чтобы получить 0.Кажется, что это неправильный подход к этому.

Я думаю, что есть какое-то datetime, которое я должен сделать, чтобы сделать эту работу, но пока мои поиски прошлис пустыми руками.Любая помощь приветствуется!

1 Ответ

2 голосов
/ 25 сентября 2019

Метод input() может принимать только текст с терминала.

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

Например:

import datetime

time_format = "%d-%m-%Y %H:%M:%S" # example 01-01-2019 23:00:00

# get start time
start_time_input = input("Start time:")
print(start_time_input)

# get stop time
stop_time_input = input("Stop time:")
print(stop_time_input)

# conversion
start_t = datetime.datetime.strptime(start_time_input, time_format)
print(start_t)
stop_t = datetime.datetime.strptime(stop_time_input, time_format)
print(stop_t)

если start_time_input или stop_time_input не относятся к формату time_format, вы получите исключение ValueError.

Если у вас есть datetime объекты, вы можете делать много вещейНапример, вычитания

import datetime
start_t = datetime.datetime.strptime("01-01-2019 22:00:00", time_format)
stop_t = datetime.datetime.strptime("01-01-2019 23:00:00", time_format)
time_difference = stop_t - start_t
print(time_difference)
# output is 1:00:00

для получения дополнительных функций см. datetime libs https://docs.python.org/3/library/datetime.html

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