Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรม Python แปลงเวลา 12 ชั่วโมงเป็น 24 ชั่วโมง

กำหนดเวลารูปแบบ 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 ผิด โค้ดด้านบนแก้ไขแล้ว