Javascript - חישובים והשוואת תאריכים

כאשר משווים תאריכים ב - Javascript חשוב לזכור שהאופרטור == מחזיר ערך אמת רק אם משני צדי המשוואה אנו משווים תאריכים של אותו אובייקט תאריך. משמעות הדבר היא שאם יש לנו שני אובייקטי תאריך נפרדים תוצאת ההשוואה באמצעות == תחזיר ערך שקרי גם אם התאריך והשעה בהם זהים לחלוטין. לדוגמה הקוד הבא לא יחזיר לנו ערך אמת למרות שהתאריכים זהים:

var a = new Date("1/1/2013");
var b = new Date("1/1/2013");
document.write(a == b);
// Output: false

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

השוואה בין שני תאריכים

בדוגמה הבאה הלקוחה מ - MSDN נשווה שני תאריכים:

// Get the current date at midnight.
var now = new Date();
var todayAtMidn = new Date(now.getFullYear(), now.getMonth(), now.getDate());

// Set specificDate to a specified date at midnight.
var specificDate = new Date("9/21/2009");

// Compare the two dates by comparing the millisecond representations.
if (todayAtMidn.getTime() == specificDate.getTime())
 {
  document.write("Same");
 }
else
 {
  document.write("Different");
 }

בדוגמה למעלה ביצענו את ההשוואה של שני התאריכים על ידי שימוש במתודה getTime. מתודה זו מחזירה את מספר אלפיות השניה החל מהתאריך 1.1.1970 בחצות ועד לתאריך המועבר כארגומנט למתודה.

הפחתת תאריך מתאריך

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

var bday = new Date("2/22/1964");
var thisday = new Date();
var hefresh = thisday.getFullYear() - bday.getFullYear();

// Change the year in bday to the current year.
bday.setFullYear(thisday.getFullYear());

// If the user's birthday has not occurred yet this year, subtract 1.
if (thisday < bday)
{
    hefresh--;
}
document.write(hefresh);

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


מדריכים נוספים הקשורים לנושא זה

מדריך ליצירת אובייקט תאריך (Date Object)

מדריך להצבת ערכים באובייקט תאריך

מדריך לשליפת נתונים מתוך האובייקט תאריך

מדריך לביצוע חישובים והשוואת תאריכים באובייקט תאריך

מדריך לכתיבת תאריכים בעברית

ריכוז כל מתודות התאריך ב - Javascript

 

 
 
© 2010-2013  www.Devschool.co.il | מדיניות פרטיות | תנאי שימוש