פרק 9: המילניום - ניהול זמן ותאריךהזמן בפרוסותהחסרון בהיבט הסקלרי של שימוש ב localtime (או ב gmtime) הוא הפלט המעוצב מראש של התוצאה. אתם יכולים לרצות לקבל ערכים בדידים של החודש, היום, השנה וכו', שאולי תרצו לעצב בדרך אחרת. כאשר אתם מזמנים את localtime מתוך הקשר לרשומה (list context) - ומשימים את הערכים המוחזרים לתוך מערך - אתם מקבלים את הזמן פרוס לחתיכות קטנות. קריאה ל localtime בהקשר רשומתי תניב את הערכים הבאים בסדר הבא: אובייקטי הרשומה המוחזרים ע"י localtime (או gmtime)
על כן, אחת הדרכים לתפיסת כל הערכים היא השמת localtime לרשומה של משתנים סקלרים: ($seconds,$minutes,$hour, $monthday,$month,$year, $weekday,$yearday,$dst_flag)=localtime(time); לגישה זו יש שתי בעיות: ראשית כל, Perl מחזירה ערכים כמו יום בשבוע וחודש בצורה נומרית, ולא בשמות, מה שאינו נוח למשתמש האנושי. שנית אתם לא חייבים להיות מעונינים בכל חתיכות האינפורמציה, ולכן אין לכם צורך ביצירת משתנים אשר לעולם לא תשתמשו בהם (כמו למשל dst_flag$). דרך חכמה לקבלת החודש ולתרגם אותו מיידית לשמו היא שימוש ברשומה מקוננת ("nested list reference"), שימו לב: $day=(Sunday,Monday,Tuesday, Wednesday,Thursday,Friday,Saturday)[(localtime(time))] הקטע הקודם נסוב סביב "מערך אנונימי", רשומה של ימי השבוע אשר אינה מושמת לתוך משתנה רשומה מסוים. אנו מגדירים אלמנט ספציפי במערך, למשל "[localtime(time))[6)". . . כאשר localtime בתורה מחזירה רשומה של משתנים הנראים בטבלה הקודמת, וכאשר אנו מבקשים את האינדקס 6, אנו מקבלים את היום בשבוע. ניתן להשתמש בטריק זהה לקבלת שם החודש. $month=(January,February,March, April,May,June,July, August,September,October, November,December)[(localtime(time))[4]]; למרות ששתי הדוגמאות שראינו מתבססות על הזמן הנוכחי (time), אתם יכולים להשתמש בכל זמן תקופה שתרצו. דרך אלטרנטיבית לשימוש בפונקצית ה localtime (או gmtime) היא שימוש במודול Time::localtime, אשר נכלל בחבילה הסטנדרטית של Perl. מודול זה עובד כמעט באותה צורה כמו localtime אולם מאפשר דרך קלה יותר לאיסוף חלקי הזמן. use Time::localtime; $tomorrow=time+86400; $timeVar=localtime($tomorrow); $day=(Sunday,Monday,Tuesday, Wednesday,Thursday,Friday,Saturday)[$timeVar->wday]; שימו לב שבסקריפט למעלה אנו מבצעים השמה של localtime למשתנה סקלרי - ממשתנה זה אתם יכולים לקרא למתודות אשר יחזירו את המידע הרלוונטי, כמו לדוגמא - היום בשבוע (timeVar->wday$). המידע מוחזר בערכים נומריים, כך שאנו עדיין זקוקים לטריק של "המערך האנונימי" לתרגום ערך זה לשם היום. היתרון מצוי בעובדה שאתם עדיין יכולים לקרא לפרק זמן בודד בשמו, בלא להזדקק לרשומת המופעים. בשימוש באובייקט ה localtime אתם יכולים לקרוא למתודות הבאות, כאשר כל אחד מהערכים הבאים הוא בעל אותו טווח ואותה משמעות כמו לאלו המצויים בפונקציית ה localtime שראינו בטבלה הקודמת. מתודות באובייקט ה localtime sec שניות min דקות hour שעות mday יום בחודש mon חודש year שנה wday יום בשבוע yday יום בשנה isdst דגל שעון קיץ זכרו שהמודול Time::localtime מכוון את הזמן ע"פ אזור הזמן שלכם. אתם יכולים להשתמש ב Time::gmtime כאלטרנטיבה לפונקציית ה gmtime באם אתם דבקים בזמן ה - GMT. מתודות של אובייקט ה localtime
זמן ידידותי למשתמש
|