সমস্যা
১২ ঘণ্টা ফরম্যাট (AM/PM) টাইমকে ২৪ ঘণ্টা ফরম্যাটে রূপান্তর করা।
Input: "12:20:20 PM" → Output: "12:20:20" (12 PM = 12:00)
Input: "12:20:20 AM" → Output: "00:20:20" (12 AM = 00:00)
Input: "01:30:45 PM" → Output: "13:30:45"
Input: "01:30:45 AM" → Output: "01:30:45"
আলগরিদম
- স্ট্রিং থেকে ঘণ্টা, মিনিট, সেকেন্ড, AM/PM এক্সট্রাক্ট করুন।
- AM হলে: ঘণ্টা ১২ হলে ০০ করুন, বাকি যেন থাকে।
- PM হলে: ঘণ্টা ১২ না হলে ১২ যোগ করুন।
- ফরম্যাট: HH:MM:SS
উদাহরণ কোড (datetime ব্যবহার - সুপারিশকৃত)
from datetime import datetime
def convert_12_to_24(time_str):
"""১২ ঘণ্টা ফরম্যাট (HH:MM:SS AM/PM) → ২৪ ঘণ্টা (HH:MM:SS)"""
try:
dt = datetime.strptime(time_str.strip(), "%I:%M:%S %p")
return dt.strftime("%H:%M:%S")
except ValueError:
return "Invalid format"
# টেস্ট
tests = ["12:20:20 PM", "12:20:20 AM", "01:30:45 PM", "01:30:45 AM", "11:59:59 PM"]
for t in tests:
print(f"{t} -> {convert_12_to_24(t)}")
আউটপুট
12:20:20 PM -> 12:20:20 12:20:20 AM -> 00:20:20 01:30:45 PM -> 13:30:45 01:30:45 AM -> 01:30:45 11:59:59 PM -> 23:59:59
স্ট্রিং স্লাইসিং দিয়ে (মূল আর্টিকেলের পদ্ধতি - বাগ fik্স করা)
def convert_12_to_24_manual(s):
s = s.strip().upper()
period = s[-2:] # AM বা PM
time_part = s[:-2].strip() # HH:MM:SS
hour = int(time_part[:2])
if period == "AM":
if hour == 12:
hour = 0
elif period == "PM":
if hour != 12:
hour += 12
else:
return "Invalid period"
return f"{hour:02d}{time_part[2:]}"
# টেস্ট
print(convert_12_to_24_manual("12:20:20 PM")) # 12:20:20
print(convert_12_to_24_manual("12:20:20 AM")) # 00:20:20
print(convert_12_to_24_manual("01:30:45 PM")) # 13:30:45
কারেন্ট টাইম কনভার্ট (মূল আর্টিকেলের উদাহরণ)
import datetime
dt = datetime.datetime.now()
time_12h = dt.strftime("%I:%M:%S %p") # ১২ ঘণ্টা ফরম্যাটে
time_24h = dt.strftime("%H:%M:%S") # ২৪ ঘণ্টা ফরম্যাটে
print(f"12-hour: {time_12h}")
print(f"24-hour: {time_24h}")
নোট
datetime.strptime/strftimeব্যবহার করুন — এটি লোকেল, লিডিং জিরো, ভ্যালিডেশন স্বয়ংক্রিয় হ্যান্ডেল করে।- ম্যানুয়াল পার্সিংয়ে এজ কেস (১২ AM/PM, ইনভ্যালিড ইনপুট) হ্যান্ডল করা জরুরি।