מניפולציה על תאריכים בפייתון
מאמר זה מסביר מניפולציה על תאריכים בפייתון.
YouTube Video
מניפולציה על תאריכים בפייתון
מניפולציה על תאריכים בפייתון נשענת בעיקר על מודול datetime
. מודול זה מספק מחלקות ופונקציות שונות למניפולציה על תאריכים ושעות.
להלן מספר דוגמאות למניפולציה בסיסית על תאריכים באמצעות מודול datetime
.
קבלת תאריך ושעה
אתה יכול לקבל את התאריך והשעה הנוכחיים כך:. datetime.now()
ו-datetime.today()
מחזירים כמעט את אותה תוצאה, אך עשויים להיות הבדלים באופן שבו הם מתמודדים עם אזורי זמן.
1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
- קוד זה מאחזר ומציג את התאריך והשעה הנוכחיים וגם רק את התאריך של היום.
יצירת תאריכים ושעות ספציפיים
אתה יכול ליצור תאריך ושעה מסוימים כך:.
1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
- קוד זה יוצר ומציג את התאריך והשעה שצוינו (7 בנובמבר 2023, 10:30:45).
עיצוב תאריכים
עיצוב תאריכים ניתן לעשות כך:.
1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
- קוד זה מאחזר את התאריך והשעה הנוכחיים, מעצב אותם בפורמט שצוין באמצעות
strftime
ומציג אותם.
מחרוזות פורמט של תאריכים
%Y
: שנה (4 ספרות)%m
: חודש (01 עד 12)%d
: יום (01 עד 31)%H
: שעה (00 עד 23)%M
: דקה (00 עד 59)%S
: שנייה (00 עד 59)
פירוש (פרסינג) מחרוזות תאריך
אתה יכול להמיר מחרוזת שמייצגת תאריך לאובייקט מסוג datetime
.
1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
- קוד זה ממיר תאריך שמיוצג כמחרוזת לאובייקט מסוג
datetime
באמצעותstrptime()
ומציג אותו.
אריתמטיקה על תאריכים
חישובים עם תאריכים ניתן לבצע כך:.
1from datetime import datetime, timedelta
2
3now = datetime.now()
4
5# Date for one day later
6tomorrow = now + timedelta(days=1)
7print(f"Date for one day later: {tomorrow}")
8
9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
- קוד זה משתמש ב-
timedelta
כדי להוסיף או להחסיר ימים ושעות מהתאריך והשעה הנוכחיים, מחשב ומציג את התאריך והשעה למחר, לפני שבוע ובעוד שעתיים.
התמודדות עם אזורי זמן
אפשר גם לנהל אזורי זמן עם המודול datetime
.
1from datetime import datetime, timezone, timedelta
2
3# Current UTC time
4utc_now = datetime.now(timezone.utc)
5print(f"Current UTC time: {utc_now}")
6
7# JST (UTC+9)
8jst = timezone(timedelta(hours=9))
9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
datetime
מחזיר כברירת מחדל 'datetime נאיבי' (ללא מידע אודות אזור זמן). ניתן לטפל באזורים זמן באופן מפורש על ידי שימוש במחלקהtimezone
אוzoneinfo
.
מחלקת date ומחלקת time
עם מודול datetime
, ניתן לטפל גם רק בתאריכים או רק בשעות.
1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
- המחלקה
date
מטפלת רק בתאריכים, והמחלקהtime
מטפלת רק בשעות.
המרה בין datetime
ו-timestamp
אפשר לבצע המרה בין UNIX timestamp לאובייקטים מסוג datetime
. כאן, UNIX timestamp מתייחס למספר השניות שעברו מאז 1 בינואר 1970.
1from datetime import datetime
2
3now = datetime.now()
4
5# datetime → timestamp
6timestamp = now.timestamp()
7print(f"Timestamp: {timestamp}")
8
9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
- קוד זה ממיר את התאריך והשעה הנוכחיים ל-UNIX timestamp, לאחר מכן משתמש בפונקציה
fromtimestamp()
כדי להמיר אותו בחזרה לאובייקט מסוגdatetime
.
מלכודות נפוצות
כאשר משתמשים במודול datetime
, יש לשים לב לנקודות הבאות:.
datetime.now()
אינו לוקח בחשבון אזורי זמן, ולכן עבור בינאום יש צורך להשתמש במפורש ב-timezone.utc
.- יש לשים לב לא לבלבל בין
%m
(חודש) ו-%M
(דקה) במחרוזות פורמט.
סיכום
מודול datetime
מספק גם אפשרויות רבות נוספות למניפולציה גמישה על תאריכים ושעות. בנוסף, זמינות מחלקות כמו date
, time
, ו- timedelta
, המתמחות בפעולות ספציפיות.
שימוש בספריות נוספות מאפשר גם מניפולציה מתקדמת יותר על תאריכים. לדוגמה, pandas
מתמחה בטיפול בנתוני סדרות זמן, בעוד dateutil
מתאימה לפענוח תאריכים מורכב. כמו כן, ספריית arrow
שימושית גם כן.
תוכלו לעקוב אחר המאמר שלמעלה באמצעות Visual Studio Code בערוץ היוטיוב שלנו. נא לבדוק גם את ערוץ היוטיוב.