שיעורי מודול (2/4)
datetime: תאריכים ושעות
המודול datetime מספק את השיעורים לייצג תאריכים ושעות.
שלושת הכיתות העיקריות
date- תאריך בלבד (שנה, חודש, יום)time- זמן בלבד (שעה, דקה, שנייה, מיקרו-שנייה)datetime- תאריך + שעה ביחדtimedelta- משך זמן (הבדל בין שני מופעים)
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
datetime.now() # current date + time
date.today() # current date onlyחשבון עם timedelta
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.0timedelta מקבל את days, seconds, microseconds, milliseconds,
minutes, hours, weeks (לא months או years, שהם לא ברורים).
עיצוב: strftime
הופך תאריך ושעה → מחרוזת לפי תבנית.
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
ההיפך: מחרוזת → תאריך ושעה, בהינתן הדפוס הצפוי.
datetime.strptime("01/01/2025", "%d/%m/%Y")
# datetime.datetime(2025, 1, 1, 0, 0)ISO 8601
להחלפת נתונים העדיפו תמיד את פורמט ISO 8601 (YYYY-MM-DDTHH:MM:SS):
ora.isoformat() # '2025-01-01T14:30:00'
datetime.fromisoformat("2025-01-01T14:30:00")אזורי זמן וזמני תאריכים מודעים
כברירת מחדל, אובייקטים datetime ב- Python הם נאיביים (כלומר שהם אינם מכילים מידע על אזור זמן). עבור יישומים בעולם האמיתי, עדיף להפוך אותם למודעים על ידי הגדרת מידע על אזור זמן באמצעות datetime.timezone.utc או שימוש במודול zoneinfo.
נסה את זה
חשב את התאריך 30 יום לאחר 1 בינואר 2025 ועצב אותו כ-'YYYY-MM-DD' במשתנה 'date_str'. הערך את 'date_str'.
הצג רמז
base + timedelta(days=30), ואז .strftime
הפתרון זמין לאחר 3 ניסיונות
סקירת התרגיל
בהינתן המחרוזת `s = '15/03/2025'`, נתח אותה עם strptime לתוך המשתנה `d` (אובייקט תאריך שעון). הערך את היום השלם בשבוע `d.weekday()` (0=יום שני, 6=יום ראשון).
הצג רמז
strptime עם התבנית בפורמט איטלקי.
הפתרון זמין לאחר 3 ניסיונות
אתגר נוסף
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 ניסיונות