2012-12-13 53 views
28

Tôi có thời gian 24 giờ sau: Thời gianLàm cách nào để chuyển đổi thời gian 24 giờ thành 12 giờ?

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

Làm thế nào tôi có thể chuyển đổi này đến 12 giờ?

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

Tôi muốn một cách thông minh chuyển đổi "10.30" để "10.30 AM" & "22:30"-"10:30 PM". Tôi có thể làm bằng cách sử dụng logic của riêng tôi nhưng có cách nào để làm điều này một cách thông minh mà không cần if ... elif?

+1

tương tự nhưng theo chiều ngược lại http://stackoverflow.com/questions/440061/convert-12-hour-date-time-to-24- giờ-ngày-giờ – Trufa

Trả lời

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: Tuyệt đối! Cảm ơn! –

8

Chìa khóa để mã này là sử dụng library function time.strptime() để phân tích các cơ quan đại diện chuỗi 24 giờ vào một đối tượng time.struct_time, sau đó sử dụng để định dạng library function time.strftime()struct_time này thành một chuỗi các mong muốn định dạng 12-giờ của bạn.

Tôi giả sử bạn không gặp khó khăn khi viết vòng lặp, để lặp qua các giá trị trong dict và để chia chuỗi thành hai phần tử có giá trị một lần.

Đối với mỗi chuỗi con, chuyển đổi các giá trị thời gian với các mã như:

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

Câu hỏi đặt ra, Converting string into datetime, cũng có câu trả lời hữu ích.

Các vấn đề liên quan