דילוג לתוכן המרכזי
מודול 8 · שיעור 2 מתוך 430/36 בקורס~12 min
שיעורי מודול (2/4)

datetime: תאריכים ושעות

המודול datetime מספק את השיעורים לייצג תאריכים ושעות.

שלושת הכיתות העיקריות

  • date - תאריך בלבד (שנה, חודש, יום)
  • time - זמן בלבד (שעה, דקה, שנייה, מיקרו-שנייה)
  • datetime - תאריך + שעה ביחד
  • timedelta - משך זמן (הבדל בין שני מופעים)
Python
from datetime import date, time, datetime, timedelta

date(2025, 1, 1)                  # datetime.date(2025, 1, 1)
time(14, 30, 0)                   # datetime.time(14, 30)
datetime(2025, 1, 1, 14, 30, 0)   # datetime.datetime(2025, 1, 1, 14, 30)

"עכשיו": now ו-today

Python
datetime.now()        # current date + time
date.today()          # current date only

חשבון עם timedelta

Python
from datetime import datetime, timedelta

ora = datetime(2025, 1, 1, 12, 0)
domani = ora + timedelta(days=1)
una_ora_fa = ora - timedelta(hours=1)

# difference between two datetimes -> timedelta
delta = domani - ora
delta.days        # 1
delta.total_seconds()   # 86400.0

timedelta מקבל את days, seconds, microseconds, milliseconds, minutes, hours, weeks (לא months או years, שהם לא ברורים).

עיצוב: strftime

הופך תאריך ושעה → מחרוזת לפי תבנית.

Python
ora = datetime(2025, 1, 1, 14, 30)
ora.strftime("%Y-%m-%d")         # '2025-01-01'
ora.strftime("%d/%m/%Y %H:%M")   # '01/01/2025 14:30'
ora.strftime("%A %d %B %Y")      # 'Wednesday 01 January 2025' (locale-dependent)

ההנחיות הנפוצות ביותר: %Y שנה בת 4 ספרות, %m חודש בן 2 ספרות, %d יום בן 2 ספרות, %H 24 שעות, %M דקות, %S שניות.

ניתוח: strptime

ההיפך: מחרוזת → תאריך ושעה, בהינתן הדפוס הצפוי.

Python
datetime.strptime("01/01/2025", "%d/%m/%Y")
# datetime.datetime(2025, 1, 1, 0, 0)

ISO 8601

להחלפת נתונים העדיפו תמיד את פורמט ISO 8601 (YYYY-MM-DDTHH:MM:SS):

Python
ora.isoformat()                 # '2025-01-01T14:30:00'
datetime.fromisoformat("2025-01-01T14:30:00")

אזורי זמן וזמני תאריכים מודעים

כברירת מחדל, אובייקטים datetime ב- Python הם נאיביים ​​(כלומר שהם אינם מכילים מידע על אזור זמן). עבור יישומים בעולם האמיתי, עדיף להפוך אותם למודעים על ידי הגדרת מידע על אזור זמן באמצעות datetime.timezone.utc או שימוש במודול zoneinfo.

נסה את זה

פעילות גופנית#python.m8.l2.e1
ניסיונות: 0טוען...

חשב את התאריך 30 יום לאחר 1 בינואר 2025 ועצב אותו כ-'YYYY-MM-DD' במשתנה 'date_str'. הערך את 'date_str'.

טוען עורך...
הצג רמז

base + timedelta(days=30), ואז .strftime

הפתרון זמין לאחר 3 ניסיונות

סקירת התרגיל

פעילות גופנית#python.m8.l2.e2
ניסיונות: 0טוען...

בהינתן המחרוזת `s = '15/03/2025'`, נתח אותה עם strptime לתוך המשתנה `d` (אובייקט תאריך שעון). הערך את היום השלם בשבוע `d.weekday()` (0=יום שני, 6=יום ראשון).

טוען עורך...
הצג רמז

strptime עם התבנית בפורמט איטלקי.

הפתרון זמין לאחר 3 ניסיונות

אתגר נוסף

פעילות גופנית#python.m8.l2.e3
ניסיונות: 0טוען...

Import `date` from the `datetime` module. Calculate the difference in days between December 25, 2026 (`date(2026, 12, 25)`) and December 20, 2026 (`date(2026, 12, 20)`). Store the integer number of days (using the `.days` attribute of the delta) in `days_diff`. Finally, evaluate the variable.

טוען עורך...
הצג רמז

The difference between two dates returns a timedelta. Access the integer days with delta.days.

הפתרון זמין לאחר 3 ניסיונות