Description
Military time uses 24 hours for the entire day instead of 12 for am/pm separately. Military time is a 4 digit (base-10) integer with the following rules:
The first two digits show the hour (between 00 and 23) and
The last two digits show the minutes (between 00 and 59)
There is no colon separating hours from minutes.
Military time starts at 0000 in the morning and counts up
When we get to the afternoon, we use 1300 for 1:00 PM and 2300 for 11:00 PM.
When we get to midnight, the hour is 00 (not 24).
TASK: Write a program that reads two times in military format and prints the number of hours and minutes between the two times (See example below).
NOTE: Your program should consider the difference between the times IN THE SAME DAY. For example: The time difference between 2359 and 0000 is 23 hours and 1 minute (NOT 1 minute).
Detailed Requirements
• Compose a written document (MS Word Document) describing your algorithm, feel free include a diagram if you like
• The program should prompt for two times separately, then print the duration of time between (see sample output below).
• The program should check the input for the correct military time format:
. Make sure the hours are between 00 and 23.
. Make sure the minutes are between 00 and 59
. If the validity check fails, it should print an appropriate error and prompt again.
• Your program should use io manipulators to produce military time with leading zeroes. e.g. 9 am should be printed 0900 (not 900).
• More points will be awarded to an implementation that can produce an accurate result regardless of the order of the inputs.
• Do not produce runtime errors that abruptly end your program (crash)
• Include descriptive comments, neat indentation, proper spacing for good readability, and appropriate and consistently named variables.
• Program source should have a comment block at the top with the student name, section, and description of your program.
Please enter a time: 1sykdf
Military Tine Format Required: Bad input, try again.
Please enter a time: 2580
Military Tine Format Required: Hours must be between 2 and 23, try again
Please enter a time: 2365
Military Tine Format Required: Minutes must be between me and 59, try again
Please enter a time: 0900 First time 0900 accepted.
Please enter a time: jdkjs
Military Time Forest Required: Bad input, try again.
Please enter a time: 39573
Military Tine Format Required: Hours must be between 28 and 23, try again
Please enter a time: 1799
Military Tine Format Required: Minutes must be between me and 59, try again
Please enter a time: 1730 Second time: 1738 accepted.
Time difference between 1988 and 1732 ts 8 hours and 30 minutes Dismissed solder!
Note! When I change the order of the time inputs. I get the same result!


Sagot :

Answer:

from datetime import time, datetime, timedelta, date

for _ in iter(list, 0):

   t1 = input("Please enter time one: ")

   t2 = input("Please enter time two: ")

   if t1.isdigit() == True and (int(t1[:2])<=23 and int(t1[2:]) <= 59)\

       and t2.isdigit() == True and (int(t2[:2])<= 23 and int(t2[2:])<=59):

       time_1 = time(hour=int(t1[:2]), minute=int(t1[2:]))

       time_2 = time(hour= int(t2[:2]), minute=int(t2[2:]))

       if time_1 > time_2:

           diff = datetime. combine (date. today( ), time_1) - datetime. combine(date. today ( ), time_2)

       else:

           diff = datetime. combine (date. today( ), time_2) -datetime. combine(date. today ( ), time_1)

       diff_list = str(diff).split(":")

       del diff_list[2]

       diff_t = "". join (diff_list)

       print(diff_t)

       break        

   if t1.isdigit() == False or t2.isdigit() == False:

       print("Military Time Forest Required: Bad input, try again.")

       continue

   elif int(t1[:2])> 23 or int(t2[:2])> 23:

       print("Military Tine Format Required: Hours must be between 00 and 23, try again")

       continue

   elif int(t1[2:])> 59 or int(t2[2:])> 59:

       print("Military Tine Format Required: Minutes must be between me and 59, try again")

       continue

Explanation:

The python Datetime package is used to manipulate date and time, creating immutable Datetime objects from the various python data types like integer and string. The block of code above is a conditional for-loop statement that gets two user time value inputs and prints out the difference as a string in Military forest time format.