Skip to content
Related Articles
Open in App
Not now

Related Articles

Python program to convert time from 12 hour to 24 hour format

Improve Article
Save Article
  • Difficulty Level : Medium
  • Last Updated : 13 Mar, 2023
Improve Article
Save Article

Given a time in 12-hour AM/PM format, convert it to military (24-hour) time. Note : Midnight is 12:00:00 AM on a 12-hour clock and 00:00:00 on a 24-hour clock. Noon is 12:00:00 PM on 12-hour clock and 12:00:00 on 24-hour clock. Examples :

Input : 11:21:30 PM
Output : 23:21:30

Input : 12:12:20 AM
Output : 00:12:20

Approach : Whether the time format is 12 hours or not, can be found out by using list slicing. Check if last two elements are PM, then simply add 12 to them. If AM, then don’t add. Remove AM/PM from the updated time.   Below is the implementation : 

Python3




# Python program to convert time 
# from 12 hour to 24 hour format 
  
# Function to convert the date format 
def convert24(str1): 
      
    # Checking if last two elements of time 
    # is AM and first two elements are 12 
    if str1[-2:] == "AM" and str1[:2] == "12"
        return "00" + str1[2:-2
          
    # remove the AM     
    elif str1[-2:] == "AM"
        return str1[:-2
      
    # Checking if last two elements of time 
    # is PM and first two elements are 12 
    elif str1[-2:] == "PM" and str1[:2] == "12"
        return str1[:-2
          
    else
          
        # add 12 to hours and remove PM 
        return str(int(str1[:2]) + 12) + str1[2:8
  
# Driver Code         
print(convert24("08:05:45 PM")) 


Output :

20:05:45

Time Complexity: O(1)

Auxiliary Space: O(1)

Here is another approach to the problem that uses the datetime module in Python to convert the time from 12-hour to 24-hour format:

Python3




from datetime import datetime
  
def convert24(time):
    # Parse the time string into a datetime object
    t = datetime.strptime(time, '%I:%M:%S %p')
    # Format the datetime object into a 24-hour time string
    return t.strftime('%H:%M:%S')
  
print(convert24('11:21:30 PM'))  # Output: '23:21:30'
print(convert24('12:12:20 AM'))  # Output: '00:12:20'


Output

23:21:30
00:12:20

This approach has the advantage of handling invalid time formats and edge cases, such as the time being in an invalid format or the hours being greater than 12. It also allows for the input time to be in any valid time format recognized by the datetime module, such as using a single digit for the hour or using a different separator between the time parts.

The time complexity of this approach is O(1), as it only involves parsing and formatting the time string.


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!