กำหนดเวลารูปแบบ 12 ชั่วโมง (มี AM/PM) แปลงเป็นรูปแบบ 24 ชั่วโมง ใช้ string slicing และตรรกะง่ายๆ
ตัวอย่าง
Input: 12:20:20 PM
Output: 24:20:20 # หมายเหตุ: 12 PM = 12 ใน 24h, แต่ตัวอย่างเดิมแสดง 24 ซึ่งไม่มาตรฐาน
กฎการแปลงมาตรฐาน:
- 12:00 AM (เที่ยงคืน) → 00:00
- 1:00 AM - 11:59 AM → 01:00 - 11:59
- 12:00 PM (เที่ยงวัน) → 12:00
- 1:00 PM - 11:59 PM → 13:00 - 23:59
โค้ดตัวอย่าง (แก้ไขให้ถูกต้องตามมาตรฐาน)
import datetime
def time_convert_12_to_24(time_12h):
"""แปลงเวลา 12h format (HH:MM:SS AM/PM) เป็น 24h format (HH:MM:SS)"""
# Parse ด้วย datetime เพื่อความถูกต้อง
dt = datetime.datetime.strptime(time_12h, "%I:%M:%S %p")
return dt.strftime("%H:%M:%S")
# ทดสอบ
test_times = [
"12:00:00 AM", # 00:00:00
"01:30:00 AM", # 01:30:00
"12:00:00 PM", # 12:00:00
"01:30:00 PM", # 13:30:00
"11:59:59 PM", # 23:59:59
]
for t in test_times:
print(f"{t} -> {time_convert_12_to_24(t)}")
ผลลัพธ์
12:00:00 AM -> 00:00:00
01:30:00 AM -> 01:30:00
12:00:00 PM -> 12:00:00
01:30:00 PM -> 13:30:00
11:59:59 PM -> 23:59:59
โค้ดต้นฉบับ (Manual String Slicing - มีบั๊กที่ 12 PM)
import datetime
def timeconvert(str1):
if str1[-2:] == "AM" and str1[:2] == "12":
return "00" + str1[2:-2]
elif str1[-2:] == "AM":
return str1[:-2]
elif str1[-2:] == "PM" and str1[:2] == "12":
return str1[:-2] # 12 PM ควรเป็น 12 ไม่ใช่ 24
else:
return str(int(str1[:2]) + 12) + str1[2:8]
# ใช้เวลาปัจจุบัน
dt = datetime.datetime.now()
print("Conversion Of Time:", timeconvert(dt.strftime("%I:%M:%S %p")))
หมายเหตุ: โค้ดต้นฉบับมี bug ที่ 12 PM แปลงเป็น 24 (ควรเป็น 12) และใช้ %H (24h) แทน %I (12h) ใน strftime ทำให้ logic ผิด โค้ดด้านบนแก้ไขแล้ว