How can I convert 24 hour time to 12 hour time?

I have the following 24-hour times:

{'Wed': '10:30 - 21:00', 'Sun': '10:30 - 21:00', 'Thu': '10:30 - 21:00', 
 'Mon': '10:30 - 21:00', 'Fri': '10:30 - 22:00', 'Tue': '10:30 - 21:00', 
 'Sat': '10:30 - 22:00'}

How can I convert this to 12-hour time?

{'Wed': '10:30 AM - 09:00 PM', 'Sun': '10:30 AM - 09:00 PM', 
 'Thu': '10:30 AM - 09:00 PM', 'Mon': '10:30 AM - 09:00 PM', 
 'Fri': '10:30 AM- 10:00 PM', 'Tue': '10:30 AM- 09:00 PM', 
 'Sat': '10:30 AM - 11:00 PM'}

I want to intelligently convert "10.30" to "10.30 AM" & "22:30" to "10:30 PM". I can do using my own logic but is there a way to do this intelligently without ifelif?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

>>> from datetime import datetime
>>> d = datetime.strptime("10:30", "%H:%M")
>>> d.strftime("%I:%M %p")
'10:30 AM'
>>> d = datetime.strptime("22:30", "%H:%M")
>>> d.strftime("%I:%M %p")
'10:30 PM'

Method 2

The key to this code is to use the library function time.strptime() to parse the 24-hour string representations into a time.struct_time object, then use library function time.strftime() to format this struct_time into a string of your desired 12-hour format.

I’ll assume you have no trouble writing a loop, to iterate through the values in the dict and to break the string into two substrings with one time value each.

For each substring, convert the time value with code like:

import time
t = time.strptime(timevalue_24hour, "%H:%M")
timevalue_12hour = time.strftime( "%I:%M %p", t )

The question, Converting string into datetime, also has helpful answers.

Method 3

>>> from datetime import datetime
>>> s = datetime.strptime("13:30", "%H:%M")
>>> print(s.strftime("%r"))
01:30:00 PM

Method 4

I know many people answer this in a similar way but the more easier way is

import time
t = time.strftime("%I:%M %p")
print(t)

the %I gives the 12 hour clock hour and %M minute, %p returns the PM or AM value. In my case it returned

05:27 PM

Method 5

Python’s strftime use %I

reference http://strftime.org/

Method 6

import time

# get current time
date_time = time.strftime("%b %d %Y %-I:%M %p")

the above outputs: May 27 2020 7:26 PM …at least for me right now 😉


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x