פוסט
טיפוס התאריך ב-Python
איך עובדים עם תאריכים ב-Python בעזרת datetime.date: יצירת תאריך, קריאת חלקים ממנו, עיצוב עם strftime ו-isoformat, חישובים עם timedelta, ותאריכים לא חוקיים.
ל-Python אין ערך תאריך מובנה כמו int או str. תאריכים נמצאים בספרייה הסטנדרטית datetime, והטיפוס שבדרך כלל צריך הוא date. date מחזיק שנה, חודש ויום, ולא יותר: בלי שעה ובלי אזור זמן. לשעה משתמשים ב-datetime, נושא נפרד.
כל דוגמה כאן הורצה עם Python 3.13. ההתנהגות נבדקה מול התיעוד הרשמי של אובייקטי date.
יצירת תאריך
מייבאים את המחלקה, ומעבירים שנה, חודש ויום כמספרים שלמים:
from datetime import date
d = date(2026, 10, 11)
print(d)
print(repr(d))
2026-10-11
datetime.date(2026, 10, 11)
print מציג בפורמט ISO (YYYY-MM-DD). repr מציג איך היה נכתב האובייקט בקוד.
שלושת הארגומנטים חובה, וכל אחד חייב להיות בטווח (חודש 1 עד 12, יום 1 עד אורך החודש). אחרת מקבלים ValueError:
date(2026, 2, 30)
ValueError: day is out of range for month
כדי לקבל את התאריך של היום, קוראים ל-date.today(). הפלט שלה משתנה כל יום, ולכן הוא לא מודפס כאן.
קריאת חלקים מהתאריך
print(d.year, d.month, d.day)
print(d.weekday(), d.isoweekday())
2026 10 11
6 7
weekday() סופרת את יום שני כ-0 (ראשון הוא 6), ו-isoweekday() סופרת את יום שני כ-1 (ראשון הוא 7). בוחרים אחת ונשארים איתה.
עיצוב תאריך
strftime בונה טקסט מתוך מחרוזת פורמט. הקודים מתחילים ב-%:
print(d.strftime("%d/%m/%Y"))
print(d.strftime("%A"))
print(d.isoformat())
11/10/2026
Sunday
2026-10-11
%d, %m ו-%Y הם היום, החודש והשנה. %A הוא שם יום בשבוע. הרשימה המלאה של הקודים נמצאת בתיעוד של strftime.
כדי לקרוא תאריך מטקסט, משתמשים ב-fromisoformat. היא מקבלת פורמט ISO:
print(date.fromisoformat("2026-01-01"))
2026-01-01
לפורמטים אחרים, כמו 11/10/2026, משתמשים ב-datetime.strptime.
חישובים עם תאריכים
מוסיפים או מחסרים timedelta, שמייצג משך זמן:
from datetime import timedelta
print(d + timedelta(days=30))
2026-11-10
חיסור של שני תאריכים נותן timedelta:
print(d - date(2026, 1, 1))
print((d - date(2026, 1, 1)).days)
283 days, 0:00:00
283
.days מחזירה את מספר הימים כמספר שלם.
אפשר להשוות תאריכים עם <, > ו-==:
print(d > date(2026, 1, 1))
True
טעויות נפוצות
- שימוש במחרוזת במקום תאריך.
"2026-10-11" > "2026-01-01"משווה טקסט. זה עובד במקרה רק בפורמט ISO. ממירים קודם עםfromisoformat.
מה הלאה
בפוסט הבא: רשימות, שמחזיקות הרבה ערכים במשתנה אחד.