web-dev-qa-db-fra.com

Comment convertir une heure de 24 heures en 12 heures?

J'ai les heures suivantes de 24 heures:

{'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'}

Comment puis-je convertir cela en 12 heures?

{'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'}

Je veux convertir intelligemment "10.30" à "10.30 AM" & "22:30" à "10:30 PM". Je peux faire en utilisant ma propre logique, mais existe-t-il un moyen de le faire intelligemment sans if... Elif?

35
Garfield
>>> 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'
64
Tim Pietzcker

La clé de ce code consiste à utiliser fonction de bibliothèque time.strptime() pour analyser les représentations de chaîne de 24 heures dans un objet time.struct_time, Puis utilisez bibliothèque function time.strftime() pour formater ce struct_time dans une chaîne de votre format 12 heures souhaité.

Je suppose que vous n'avez aucun problème à écrire une boucle, à parcourir les valeurs du dict et à diviser la chaîne en deux sous-chaînes avec une valeur de temps chacune.

Pour chaque sous-chaîne, convertissez la valeur de temps avec un code comme:

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

La question, Conversion de chaîne en datetime , a également des réponses utiles.

9
Jim DeLaHunt

Utilisation du strftime de Python% I

référence http://strftime.org/

0
javis