logo


פרק 9: המילניום - ניהול זמן ותאריך

התעמלות עם לוח שנה

ראינו בחלקים הקודמים שבעזרת שימוש בזמן שניות תקופתי, חיבור וחיסור של תקופת זמן הופכות לפעולה פשוטה ביותר. למרות זאת, ישנם מקרים בהם עדיין יותר נוח לבטא זמן בשיטות שונות מאשר שניות, ו Date::Manip מאפשרת לחשב זמנים בעזרת הגדרות ידידותיות יותר למשתמש, וזאת על ידי פונקצית ה DateCalc&.

נניח שתרצו להוסיף 12 שעות לזמן הנוכחי:

$time=&DateCalc("today","+12 hours");
print scalar localtime(&UnixDate($time,"%s"));

או לחסר 12 שעות מהזמן הנוכחי:

$time=&DateCalc("today","-12 hours");
print scalar localtime(&UnixDate($time,"%s"));

למעשה ניתן אף לכתוב "12- hours" אף כ "12 hours ago" (לפני 12 שעות), ו Date::Manip עדיין תבין זאת, אולם חייבים לציין שזהי התחכמות מיותרת!

מובן שניתן להוסיף או להחסיר זמנים מורכבים אחרים, לדוגמא:

$time=&DateCalc("today","+3 days 12 hours 30 minutes");
print scalar localtime(&UnixDate($time,"%s"));

כמו כן Date::Manip מודעת למוסכמות אנושיות מסוימות, כגון "ימי עבודה", או ימים הנופלים בין שני לשישי (כך זה ברוב העולם). לפיכך, אתם יכולים, כמו שחברות אוהבות לעשות, לחשב "3 ימי עבודה החל ממחר":

$time=&DateCalc("tomorrow","+3 business days");
print scalar localtime(&UnixDate($time,"%s"));

טריק שימושי נוסף הוא ידיעת ההפרש בין שתי זמנים שונים. אתם יכולים לעשות זאת בקלות בעזרת זמן שניות תקופתי, אולם אז עדיין תישארו עם שניות, שיכריחו אתכם להפוך זאת לשעות, דקות ושניות, וכו'. גם כאן Date::Manip יכולה לסייע. לדוגמא הבא נבדוק כמה זמן עבר בין Halloween לבין Christmas של 1999?

$timeDelta=&DateCalc(&ParseDate("31 October 1999"),
       &ParseDate("December 25, 1999"),\$err,1);
print $timeDelta;

הפלט, בפורמט של YY:MM:WK:DD:HH:MM:SS (שניות:דקות:שעות:ימים:שבועות:חודשים:שנים)

+0:1:3:4:0:0:0

ומה למדנו? למדנו שעבר חודש 1, 3 שבועות, ו 4 ימים בין Halloween ל Christmas. מתערבים שלא ידעתם זאת לפני זה.

Date::Manip התעמלות עם
תוכן עניינים
סיכום

אודות
תוכן עניינים
פרק 1: ה Perl שאתם צריכים לדעת
פרק 2: קישור Perl לעמודי הרשת
פרק 3: שמירת מצב
פרק 4: HTML בחטף ותבניות (Templates) רשת
פרק 5: עיבוד וניתוח של עמודי רשת
פרק 6: להשתעשע עם בסיסי נתונים מקוונים:אקסס
פרק 7: המודל MySQL
פרק 8: להשתעשע בבסיסי נתונים - GUFE - החזית הכללית והשימושית
פרק 9: המילניום - ניהול זמן ותאריך
זמן ידידותי למשתמש  
הזמן בפרוסות  
להפוך את הזמן  
התעמלות עם Date::Manip  
התעמלות עם לוח שנה  
סיכום  
פרק 10: ניהול רשימות והאשים (Hashs)
פרק 11: הפניה להפניה
פרק 12: הכרות עם mod_perl