GeeksforGeeks App
Open App
Browser
Continue

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

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.

#### Approach#3: Using regular expression

Use regular expressions to extract the hour, minute, second, and AM/PM parts from the input time string. Apply the necessary logic to convert the hour to 24-hour format. Format the hour, minute, and second parts into the desired 24-hour time format.

#### Algorithm

1. Use regular expressions to extract the hour, minute, second, and AM/PM parts from the input time string.
2. If AM/PM is “PM” and hour is not equal to 12, add 12 to the hour value
3. If AM/PM is “AM” and hour is equal to 12, set hour to 0
4. Format the time into 24-hour format and return the result

## Python3

 `import` `re` `def` `convert_to_24hour(time_str):``    ``hour, minute, second, am_pm ``=` `re.findall(``'\d+|\w+'``, time_str)``    ``hour ``=` `int``(hour)``    ``if` `am_pm ``=``=` `'PM'` `and` `hour !``=` `12``:``        ``hour ``+``=` `12``    ``elif` `am_pm ``=``=` `'AM'` `and` `hour ``=``=` `12``:``        ``hour ``=` `0``    ``return` `f``'{hour:02d}:{minute}:{second}'``print``(convert_to_24hour(``'11:21:30 PM'``))``print``(convert_to_24hour(``'12:12:20 AM'``))`

Output

```23:21:30
00:12:20```

Time complexity: O(1)
Space complexity: O(1)

METHOD 4:Using .split

APPROACH:

The approach of this code is to use the datetime module to convert the input time string to a datetime object, and then format the object into a string in 24-hour format using the strftime method.

ALGORITHM:

1.Define the convert_12_to_24 function that takes a time string in 12-hour format as input.
2.Use the datetime module to parse the input time string into a datetime object.
3.Format the datetime object into a string in 24-hour format using the strftime method.
4.Return the 24-hour format string as the output of the function.
5.Call the convert_12_to_24 function with the input time strings and print the input and output times.

## Python3

 `def` `convert_12_to_24(time_string):``    ``h, m, s ``=` `map``(``int``, time_string[:``-``3``].split(``':'``))``    ``suffix ``=` `time_string[``-``2``:]``    ``offset ``=` `0` `if` `suffix ``=``=` `'AM'` `else` `12``    ``h ``=` `(h ``%` `12``) ``+` `offset``    ``return` `'{:02d}:{:02d}:{:02d}'``.``format``(h, m, s)` `input_time ``=` `'11:21:30 PM'``output_time ``=` `convert_12_to_24(input_time)``print``(``'Input time:'``, input_time)``print``(``'Output time:'``, output_time)` `input_time ``=` `'12:12:20 AM'``output_time ``=` `convert_12_to_24(input_time)``print``(``'Input time:'``, input_time)``print``(``'Output time:'``, output_time)`

Output

```Input time: 11:21:30 PM
Output time: 23:21:30
Input time: 12:12:20 AM
Output time: 00:12:20```

Time complexity:
The time complexity of this code is O(1) since the time it takes to convert the input time string to a datetime object and format it into a string in 24-hour format is constant.

Auxiliary Space:
The space complexity of this code is O(1) since the memory used by the function is constant and does not depend on the input size.

My Personal Notes arrow_drop_up