2012-12-13 13 views
28

Mam następujących godzinach: 24-godzinny czasJak przekonwertować 24-godzinny czas na 12 godzinny?

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

Jak mogę przekonwertować to do 12-godzinnego?

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

Chcę inteligentnie konwertować "10.30" do "10.30 AM" & "22:30" do "10:30 PM". Mogę zrobić przy użyciu własnej logiki, ale czy istnieje sposób inteligentnie to zrobić bez if ... elif?

+1

Podobnie, ale odwrotnie http://stackoverflow.com/questions/440061/convert-12-hour-date-time-to-24- godzina-data-czas – Trufa

Odpowiedz

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: Absolutnie! Dzięki! –

8

Kluczem do tego kodu jest użycie library function time.strptime() do analizowania 24-godzinne ciąg reprezentacje w time.struct_time obiektu, a następnie użyć library function time.strftime() sformatować ten struct_time w ciąg żądanym formacie 12-godzinnym.

Założę się, że nie masz problemu z pisaniem pętli, iterowaniem wartości w dyktafonie i łamaniem łańcucha na dwa ciągi z jedną wartością czasu.

Dla każdego fragmentu, konwertować wartość czasu z kodem jak:

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

Pytanie Converting string into datetime, posiada również pomocne odpowiedzi.