✍️ تاریخ فروش یک رشته دلخواه نیست؛ باید به یک روز واقعی اشاره کند. در این دوره قالب دقیق میلادی YYYY-MM-DD را میخواهیم، مثل 2026-04-09. صفرهای ماه و روز مهماند. کتابخانه datetime میتواند هم قالب را بخواند و هم روزهای غیرممکن مثل سیام فوریه را رد کند.
from datetime import datetime, date
first = datetime.strptime('2026-04-09', '%Y-%m-%d').date()
second = date.fromisoformat('2026-04-09')
print(first == second) # True
strptime با الگوی مشخص کار میکند و fromisoformat برای شکل ISO آماده است. برای تضمین قالب دقیق، بعد از تبدیل بررسی میکنیم parsed.isoformat() == text باشد؛ این رفتوبرگشت شکل کوتاه یا فاصله اضافی را رد میکند. در این دوره تاریخ را strip نمیکنیم، چون قرارداد دقیق بودن متن تاریخ را میخواهد.
خطای رایج، اعتبارسنجی فقط با تعداد نویسه یا جدا کردن روی خط تیره است؛ 2026-02-30 هم ظاهر دهنویسهای دارد ولی روز واقعی نیست. زمان فعلی، منطقه زمانی و تقویم شمسی در این مسئله دخالت ندارند؛ همه نمونهها تاریخ ثابت دارند تا نتیجه روی هر دستگاه یکسان باشد.
فعالیت شما
تبدیل تاریخ ثابت ISO را بخوان؛ قالب دقیق YYYY-MM-DD و روز واقعی لازم است. date.isoformat باید همان متن اولیه را بدهد. این گام خواندنی است.