קורס פיתוח מתקדם בפייתון
פרק
>
רמה
מודולי מחרוזת וזמן
מודול תאריך/זמן
מטרה
להתאים רשומות ולהגדיר תאריכי משלוח לציוד באמצעות פונקציות מודול תאריך ושעה.
הקומה התחתונה של התוספת באזור הבנייה החדש היא מחסן המכיל חלק מהציוד שנמסר לאחרונה, שכבר נארז ומוכן למשלוח לאזורים סביב הבנייה החדשה. יש לסמן אותם עם התאריכים והשעות הנכונים, ולוודא שכל התוויות שכבר הוחלו כוללות את כל המידע הרלוונטי. כדי לעשות זאת, נוכל להקדיש זמן לכתיבה ולעיצוב ידני של תאריכים ושעות, אך יש דרך מהירה הרבה יותר לעשות זאת על ידי שימוש במודול התאריך והשעה.
מודול התאריך והשעה מיובא על ידי כתיבת 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 ליד השטיחים הצבעוניים נחתמו, השלב יהיה מושלם.