01-01-2005, 17:16
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,775
|
|
בדיקת תאריכים צריכה לקחת בחשבון הרבה דברים
ולא שכל ערך גדול מהערך הקודם. אתן לך דוגמא מדוע זה לא נכון.
לדוגמא קח את תאריך ה 4 באפריל מול תאריך ה 3 במאי
אם תבדוק שכל אחד מהערכים גדול מהשני, התוצאה של ה if תהיה שלילית, כי 3 קטן מ 4, ולא גדול מ 4, אבל ה 3 במאי זה אחרי ה 4 באפריל כמו שאתה יודע.
הפתרון, בלי להסתבך יותר מדי, הוא להשתמש בכלי הנהדר שעולם ה UNIX הביא לנו, העונה לשם Unixtime. מה זה Unixtime? זה מספר אחד ארוך, שמהווה את מספר השניות שעברו מ 0:00 1/1/1970. מדוע זה טוב? כי אתה יכול להפוך כל תאריך מ, ואל, unixtime, וככה לבצע השוואות. לכן: א. עדיף לאכסן את התאריכים ב unixtime במסד נתונים, כי כך הכי קל למיין אותם (פשוט ממיינים לפי סדר עולה/יורד), וב. ניתן להשתמש בזה כדי לבדוק מה קדם למה.
כיצד הופכים תאריך משפה אנושית ל unixtime? אין קל מזה ב PHP - פשוט משתמשים בפונקציה mktime.
איך הופכים מ unixtime חזרה לתאריך רגיל? עם date שכבר השתמשת בה. ניתן להוסיף ל date פרמטר שמכיל unixtime, ואז date תתייחס ל unixtime במקום לזמן העכשווי.
בהצלחה
|