קורס פיתוח מתקדם בפייתון
פרק
>
רמה

מודולי מחרוזת וזמן
מודול תאריך/זמן

מטרה

להתאים רשומות ולהגדיר תאריכי משלוח לציוד באמצעות פונקציות מודול תאריך ושעה.

הקומה התחתונה של התוספת באזור הבנייה החדש היא מחסן המכיל חלק מהציוד שנמסר לאחרונה, שכבר נארז ומוכן למשלוח לאזורים סביב הבנייה החדשה. יש לסמן אותם עם התאריכים והשעות הנכונים, ולוודא שכל התוויות שכבר הוחלו כוללות את כל המידע הרלוונטי. כדי לעשות זאת, נוכל להקדיש זמן לכתיבה ולעיצוב ידני של תאריכים ושעות, אך יש דרך מהירה הרבה יותר לעשות זאת על ידי שימוש במודול התאריך והשעה.

מודול התאריך והשעה מיובא על ידי כתיבת import datetime, וזה פותח סדרה של פונקציות חזקות שמאפשרות לקרוא ולהגדיר זמנים ותאריכים מעוצבים אותם ניתן לאחסן באובייקטים. ניתן גם להשתמש ב-from datetime import timezone, timedelta על מנת להגדיר אזורי זמן. הפונקציות הבאות נפתחות על ידי ייבוא המודול:

  • datetime.datetime(): מאפשר לך להגדיר ולאחסן זמן לבחירתך, ולקבל מספר ארגומנטים כדלקמן: year, month, day, hour, minute, second, microsecond, timezone. אין צורך להזין את כל הארגומנטים, אלא רק את אלו שברצונך להשתמש בהם.
  • datetime.datetime.now(): מחזיר את התאריך והשעה הנוכחיים שלך כפי שהם מופיעים בשעון.
  • datetime.datetime.date(): מחזיר רק את התאריך מתוך האובייקט, ללא שעה.
  • datetime.datetime.time(): מחזיר רק את השעה מתוך האובייקט, ללא תאריך.
  • datetime.datetime.timestamp(): מחזיר את חותמת הזמן של האובייקט כמספר ב-UNIX.
  • timezone(): מאפשר לך להגדיר אזור זמן לשימוש עם ארגומנטים של תאריכים ושעות.
  • datetime.strftime(): מאפשר לחלץ מידע מסוים מתוך תאריך ושעה ולעצב אותו כרצונך באמצעות קודים ספציפיים. לצורכינו נשתמש בקודים הבאים:
    • "%a" : יום בשבוע, בצורה מקוצרת
    • "%d" : יום בחודש
    • "%B" : שם חודש, במלואו
    • "%I" : שעה, במחזור של 12 שעות
    • "%M" : דקות
    • "%p" : מרידיאן, AM/PM
    • "%x" : פורמט תאריך מקומי
    • "%X" : פורמט שעה מקומית
    • "%j" : יום בשנה
    • "%U" : שבוע בשנה
    • "%z" : אזור זמן UTC

כדי להתחיל, עבור לסימון X הבהיר ופנה לשולחן, השתמש בפונקציה read() כדי לבדוק את תאריכי האריזה למשלוחים וכן את תאריכי ההתחלה והסיום של הפרויקטים. רשום את תאריכי ההתחלה והסיום המצוינים במסמך (חודש/יום/שנה). שלוש נקודות הנתונים הראשונות המצוינות במחשבה וכן אזור הזמן, כבר כתובות מראש בעורך הקוד לנוחות שימוש בפונקציות בהמשך.

באותו חלל, צור משתנה בשם today ואחסן בו את הערך המוחזר מ-datetime.datetime.now(). השתמש ב-str() כדי להמיר את הערך למחרוזת כך שיהיה בפורמט קריא, לדוגמה: today = str(datetime.datetime.now()). השתמש בפונקציה display() כדי לשרטט בזיכרון את תאריך היום, וכך יוגדר תאריך לחלוקת המשלוחים ותוכל להתחיל להוסיף נקודות נתונים חסרות לאזורים הרלוונטיים.

עבור לסימון X הזהוב שליד השולחן, וכאן נחשב ונשרטט את מספר הימים שייקח הפרויקט. ישנם שני משתנים בעורך בשם start ו-end השומרים תאריכים. רשום את תאריכי ההתחלה והסיום שקראת קודם בתאים המיועדים. צור משתנה בשם result ואחסן בו את תוצאת ההפחתה בין המשתנים end ו-start. השתמש ב-str() כדי להמיר את הערך למחרוזת בפורמט קריא, לדוגמה: result = str(end-start). השתמש בפונקציה write() כדי לשרטט את המשתנה result, ובכך לסמן כמה זמן ייקח התהליך.

מעכשיו נעבור לסימון X הזהוב שליד השטיח האדום, ונמשיך לסימון X שליד קיפסאות השטיח האדום בעמודה השמאלית. כאן נוסיף חלקים ספציפיים מהתאריכים שבאריזה החסרים מקיפסאות באמצעות datetime(). בעורך יופקד תאריך כתוב מראש במשתנה red_date, ממנו נחלץ חלקי מידע שונים ונשתמש בהם לתיוג הקיפסאות.

עבור השטיחים האדומים:

  • על סימון X הזהוב, פנה לקיפסאות ויצור משתנה בשם red_days, ואחסן בו את התאריך ללא השעה באמצעות date() מהמשתנה red_date, והמר אותו באמצעות str(), כך: red_days = str(red_date.date()). השתמש בפונקציה write() כדי לתייג את הקיפסאות עם red_days.

  • על סימון X הבהיר, פנה לקיפסאות ויצור משתנה בשם red_time ואחסן בו את השעה ללא התאריך באמצעות time() מהמשתנה red_date והמר אותו באמצעות str(), כך: red_time = str(red_date.time()). השתמש בפונקציה write() כדי לתייג את הקיפסאות עם red_time.

  • על סימון X הכהה, פנה לקיפסאות ויצור משתנה בשם red_timestamp ואחסן בו את חותמת הזמן המחושבת מהמשתנה red_date, לדוגמה: red_timestamp = red_date.timestamp(). השתמש בפונקציה write() כדי לתייג את הקיפסאות עם red_timestamp.

לאחר מכן, נעבור לסימון X שלפני קיפסאות השטיח הכחול. בדומה למקרים הקודמים, יש סדרה של שלושה סימונים בצבעים, במקרה זה בהתייחס למשתנה blue_date הכתוב מראש להשלמת התוויות. עבור כל סימון, השתמש בפונקציה strftime() להוסיף אלמנטים חסרים לתוויות המשלוח. בשונה מהפונקציות הקודמות, פונקציה זו דורשת קוד ספציפי לחילוץ ועיצוב האלמנטים בתאריך היעד. לדוגמה, כדי לקבל את יום השבוע עבור המשתנה blue_date תשתמש בקוד "%a" עם הפונקציה strftime() בצורה הבאה: blue_date.strftime("%a").

עבור סימוני X ליד קיפסאות השטיח הכחול, השתמש בפונקציה strftime() עם הקוד הספציפי הנדרש. עיין ברשימת הקודים המפורטת לעיל בהתאם לדרישות. עבור השטיחים הכחולים:

  • על סימון X הזהוב, פנה לקיפסאות ויצור משתנה בשם blue_weekday ואחסן בו את יום השבוע באמצעות strftime() מהמשתנה blue_date כך: blue_day = blue_date.strftime("%a"). צור משתנה נוסף בשם blue_day ואחסן בו את יום החודש באמצעות strftime() מהמשתנה blue_date. צור משתנה נוסף בשם blue_month ואחסן בו את שם החודש, במלואו, באמצעות strftime() מהמשתנה blue_date. הכנס את המשתנים blue_weekday, blue_day ו-blue_month לתוך הפונקציה write() הכתובה מראש.

  • על סימון X הבהיר, פנה לקיפסאות ויצור משתנה בשם blue_hour ואחסן בו את השעה, במחזור של 12 שעות, באמצעות strftime() מהמשתנה blue_date. צור משתנה נוסף בשם blue_minute ואחסן בו את הדקה באמצעות strftime() מהמשתנה blue_date. צור משתנה נוסף בשם blue_meridian ואחסן בו את המרידיאן, AM/PM, באמצעות strftime() מהמשתנה blue_date. הכנס את המשתנים blue_hour, blue_minute ו-blue_meridian לתוך הפונקציה write() הכתובה מראש.

  • על סימון X הכהה, פנה לקיפסאות ויצור משתנה בשם blue_local_date ואחסן בו את פורמט התאריך המקומי באמצעות strftime() מהמשתנה blue_date. צור משתנה נוסף בשם blue_local_time ואחסן בו את פורמט השעה המקומי באמצעות strftime() מהמשתנה blue_date. הכנס את המשתנים blue_local_date, blue_local_time ו-blue_meridian לתוך הפונקציה display() הכתובה מראש.

לבסוף, נעבור לסימון X הזהוב שליד השטיח הירוק ונמשיך לסימונים שליד קיפסאות השטיח הירוק בעמודה הימנית. כאן נמשיך להוסיף חלקים ספציפיים מהתאריכים שבאריזה החסרים מהקיפסאות באמצעות strftime(). בעורך יופקד תאריך כתוב מראש במשתנה green_date, ממנו נחלץ חלקים שונים של מידע ונשתמש בהם לתיוג הקיפסאות.

עבור השטיחים הירוקים:

  • על סימון X הזהוב, פנה לקיפסאות ויצור משתנה בשם green_day ואחסן בו את יום השנה באמצעות strftime() מהמשתנה green_date. השתמש בפונקציה write() כדי לתייג את הקיפסאות עם green_day.

  • על סימון X הבהיר, פנה לקיפסאות ויצור משתנה בשם green_week ואחסן בו את שבוע השנה באמצעות strftime() מהמשתנה green_date. השתמש בפונקציה write() כדי לתייג את הקיפסאות עם green_week.

  • על סימון X הכהה, פנה לקיפסאות ויצור משתנה בשם green_timezone ואחסן בו את אזור הזמן UTC באמצעות strftime() מהמשתנה green_date. השתמש בפונקציה write() כדי לתייג את הקיפסאות עם green_timezone.

ברגע שכל התוויות בסימוני X ליד השטיחים הצבעוניים נחתמו, השלב יהיה מושלם.

ספר קוד