2012-12-13 27 views
28

ho i seguenti tempi di 24 ore: il tempoCome posso convertire l'ora da 24 a 12 ore?

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

Come posso convertire questo per 12 ore?

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

voglio convertire in modo intelligente "10.30" a "10.30 AM" & "22:30"-"10:30 PM". Posso fare usando la mia logica, ma c'è un modo per farlo in modo intelligente senza if ... elif?

+1

Simile ma viceversa http://stackoverflow.com/questions/440061/convert-12-hour-date-time-to-24- ora-data-ora – Trufa

risposta

48
>>> 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' 
+0

@JFSebastian: Assolutamente! Grazie! –

8

La chiave di questo codice è utilizzare il library function time.strptime() per analizzare le rappresentazioni di stringa di 24 ore in un oggetto time.struct_time, quindi utilizzare library function time.strftime() per formattare questo struct_time in una stringa del formato 12 ore desiderato.

Suppongo che non abbiate problemi a scrivere un ciclo, per scorrere i valori nel dict e per spezzare la stringa in due sottostringhe con un valore temporale ciascuna.

Per ogni stringa, convertire il valore di tempo con un codice simile:

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

La domanda, Converting string into datetime, ha anche risposte utili.

Problemi correlati