Chuyển đổi định dạng thời gian từ 12 giờ (AM/PM) sang 24 giờ. Xử lý edge case: 12 AM → 00, 12 PM → 12.
Quy tắc
- AM: giữ nguyên giờ (trừ 12 AM → 00).
- PM: cộng 12 (trừ 12 PM → 12).
Hàm chuyển đổi
def convert_12h_to_24h(time_str):
"""
Input: 'HH:MM:SS AM/PM'
Output: 'HH:MM:SS' (24h)
"""
period = time_str[-2:].upper()
hour = int(time_str[:2])
if period == 'AM':
if hour == 12:
hour = 0
else: # PM
if hour != 12:
hour += 12
return f"{hour:02d}{time_str[2:8]}"
# Test
tests = ["12:20:20 AM", "12:20:20 PM", "01:30:45 PM", "11:59:59 AM"]
for t in tests:
print(f"{t} → {convert_12h_to_24h(t)}")
Kết quả
12:20:20 AM → 00:20:20
12:20:20 PM → 12:20:20
01:30:45 PM → 13:30:45
11:59:59 AM → 11:59:59
Sử dụng datetime (khuyên dùng)
from datetime import datetime
def convert_dt(time_str):
dt = datetime.strptime(time_str, "%I:%M:%S %p")
return dt.strftime("%H:%M:%S")
print(convert_dt("12:20:20 PM")) # 12:20:20
print(convert_dt("01:30:45 PM")) # 13:30:45
Lấy giờ hiện tại và chuyển
from datetime import datetime
now = datetime.now()
print("12h:", now.strftime("%I:%M:%S %p"))
print("24h:", now.strftime("%H:%M:%S"))
Lưu ý
%I= 12h,%H= 24h,%p= AM/PM.- Dùng
datetimemodule chuẩn thay vì tự parse string (tránh bug edge case). - Xử lý timezone: dùng
pytzhoặczoneinfo(Python 3.9+).