سطح مقدماتی (Beginner Level)
کار با زمان و تاریخ یکی از نیازهای اصلی در برنامهنویسی است؛ از ثبت زمان ورود کاربران گرفته تا محاسبه مهلت تحویل پروژه. در پایتون، ماژول استاندارد datetime ابزار اصلی برای این کار است.
۱. دریافت تاریخ و زمان فعلی
برای دسترسی به زمان حال، باید از کلاس datetime درون ماژول datetime استفاده کنیم. دقت کنید که نام ماژول و نام کلاس یکسان است.
مثال ۱: نمایش تاریخ و ساعت دقیق همین لحظه
در این مثال از متد .now() استفاده میکنیم که تاریخ و ساعت را برمیگرداند.
مثال ۲: نمایش فقط تاریخ امروز
اگر فقط به "روز، ماه و سال" نیاز دارید و ساعت مهم نیست، از کلاس date استفاده کنید.
۲. ساخت یک تاریخ مشخص (Creating Date Objects)
گاهی لازم است تاریخی در گذشته یا آینده را بسازید (مثلاً تاریخ تولد). برای این کار کافیست سال، ماه و روز را به کلاس datetime بدهید.
# Example 2: Constructor Syntax (Static view)
# datetime(year, month, day, hour, minute, second, microsecond)
d = datetime(2024, 5, 20)
۳. فرمتدهی نمایش تاریخ (strftime)
خروجی پیشفرض پایتون شاید برای نمایش به کاربر مناسب نباشد (مثلاً 2025-01-01). با استفاده از متد strftime (String Format Time) میتوانید تاریخ را به هر شکلی که میخواهید تبدیل به رشته کنید.
کدهای پرکاربرد:
%Y: سال چهار رقمی (2025)%m: ماه عددی (01)%B: نام کامل ماه (January)%d: روز (01)%H: ساعت (24 ساعته)%M: دقیقه
مثال ۱: نمایش تاریخ به فرمت خوانا
مثال ۲: نمایش نام روز و ماه
سطح پیشرفته (Professional Level)
در سطح حرفهای، بحث محاسبات زمانی (کم و زیاد کردن تاریخ)، تبدیل رشته به آبجکت زمان، و مدیریت Timezone اهمیت پیدا میکند.
۱. محاسبات زمانی با timedelta
کلاس timedelta نشاندهنده "مدت زمان" یا اختلاف بین دو تاریخ است. با این کلاس میتوانید روزها یا ساعتهایی را به یک تاریخ اضافه یا کم کنید.
مثال ۱: محاسبه تاریخ هفته آینده و دیروز
مثال ۲: محاسبه اختلاف بین دو تاریخ
وقتی دو آبجکت datetime را از هم کم میکنید، خروجی یک timedelta است.
۲. تبدیل رشته به تاریخ (strptime)
برعکس strftime، متد strptime (String Parse Time) یک رشته را میگیرد و آن را به آبجکت قابل محاسبه datetime تبدیل میکند. این کار برای پردازش ورودیهای کاربر یا فایلهای Log حیاتی است.
# Example 2: Error handling logic (Static)
from datetime import datetime
try:
dt = datetime.strptime("invalid-date", "%Y-%m-%d")
except ValueError:
print("فرمت تاریخ اشتباه است.")
۳. کار با منطقه زمانی (Timezones)
در پایتون ۳.۹ به بعد، ماژول zoneinfo برای مدیریت Timezone اضافه شده است. همیشه سعی کنید در دیتابیسها زمان را به صورت UTC ذخیره کنید و فقط هنگام نمایش به کاربر، آن را به زمان محلی تبدیل کنید.
مثال ۱: دریافت زمان با Timezone مشخص (Aware Datetime)
مثال ۲: تبدیل UTC به زمان محلی
۴. کار با Timestamp
تایماستمپ (Unix Timestamp) تعداد ثانیههای گذشته از ۱ ژانویه ۱۹۷۰ است. این فرمت برای ذخیرهسازی سبک در دیتابیس بسیار محبوب است.