דלג לתוכן

מחשבון גיל — גיל מדויק בשנים, חודשים וימים

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

מחשבון גיל

גיל מדויק
36 שנים 7 חודשים 26 ימים

נולדת ביום Monday

יום הולדת הבא: 127 ימים הרחק (חוגגת 37)

הגילך ביחידות אחרות

חודשים
439
שבועות
1,912
ימים
13,387
שעות
321,288
דקות
19,277,280
שניות
1,156,636,800

התקדמות חיים

הגילך מול טווח ייחוס של 80 שנה להמחשה.

הדמיה של גיל3636 / 80 שנים080
מחשבון טעינה...
📚

תיעוד

מהו מחשבון גיל?

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

כיצד מחשבים גיל

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

גיל לפי לוח השנה (שנים, חודשים, ימים)

זו הדרך היומיומית שבה אנשים מציינים את גילם, למשל: "בן 33 שנים, 4 חודשים ו־5 ימים". החישוב נעשה בשלושה שלבים:

  1. סופרים את מספר השנים השלמות שעברו מאז תאריך הלידה.
  2. מיום ההולדת האחרון סופרים את מספר החודשים השלמים שעברו.
  3. משם סופרים את מספר הימים הנותרים.

שלב 3 נעשה מורכב לקראת סוף החודש, משום שלא בכל החודשים יש אותו מספר ימים. אדם שנולד ב־31 בינואר, וגילו נמדד ב־1 במרץ, הוא בן 1 חודש ו־1 יום. חודש אחד אחרי 31 בינואר מגיע 28 בפברואר (או 29 בפברואר בשנה מעוברת), משום שאין 31 בפברואר. 1 במרץ חל יום אחד לאחר מכן. שיטה זו, המכונה לעיתים כלל relativedelta על שם ספריית Python שהפכה אותה לנפוצה, מצמידה את תאריך יום השנה ליום האחרון בחודש הקצר יותר, כך שמספר הימים לעולם אינו שלילי.

סך הזמן שחלף (ימים, שעות, שניות)

כדי לחשב במדויק את הזמן שחי אדם, ממירים את שני התאריכים לנקודת זמן יחידה ומחשבים את ההפרש בימים שלמים:

d=⌊t−b86400000⌋d = \left\lfloor \frac{t - b}{86400000} \right\rfloor

כאשר d הוא מספר הימים השלמים, t הוא תאריך היעד ו-b הוא תאריך הלידה, וכל אחד מהם נלקח כמספר אלפיות השנייה, והמחלק הוא מספר אלפיות השנייה ביום אחד.

שני התאריכים נקבעים לחצות לפי UTC (זמן אוניברסלי מתואם) לפני החיסור. כך מונעים משינויים בשעון הקיץ להוסיף או לגרוע שעה ולעוות את ספירת הימים. מתוך מספר הימים, מספר השבועות הוא מספר הימים חלקי 7, בעיגול כלפי מטה. את מספר השעות, הדקות והשניות מקבלים על ידי הכפלת מספר הימים ב־24, 1,440 ו־86,400.

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

דוגמה פתורה

אדם שנולד ב־1 בינואר 2000, וגילו נמדד ב־1 בינואר 2020:

מדדערך
גיל לפי לוח השנה20 שנים, 0 חודשים, 0 ימים
סך החודשים240
סך השבועות1,043
סך הימים7,305
סך השעות175,320
סך הדקות10,519,200
סך השניות631,152,000
היום בשבוע שבו נולדשבת

הסכום של 7,305 ימים שווה ל־20 × 365 ועוד 5 ימים מעוברים, עבור השנים המעוברות 2000, 2004, 2008, 2012 ו־2016. בכל אחת מהשנים האלה נוסף יום 29 בפברואר, הנכלל בטווח של 20 שנים. לכן מספר הימים גבוה יותר ממכפלה פשוטה של 20 × 365, ולכן קל לטעות בחישוב ידני בכמה ימים.

נוסחה לחישוב גיל בקוד

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

1from dateutil.relativedelta import relativedelta
2from datetime import date
3
4birth, target = date(2000, 1, 1), date(2020, 1, 1)
5
6age = relativedelta(target, birth)     # calendar age
7print(f"{age.years}y {age.months}m {age.days}d")
8
9total_days = (target - birth).days     # total elapsed days
10print(total_days)                      # 7305
11

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

שאלות נפוצות

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

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

האם החישוב מביא בחשבון שנים מעוברות? כן. ספירת הימים הכוללת כוללת כל 29 בפברואר שנמצא בין שני התאריכים. בשנה שאין בה 29 בפברואר, יום הולדתו של מי שנולד ביום המעובר נחשב ל־28 בפברואר, היום האחרון באותו חודש. אדם שנולד ב־29 בפברואר 1996 הוא בן 26 שנים, 11 חודשים ו־22 ימים ב־20 בפברואר 2023, ויום ההולדת הבא שלו חל 8 ימים לאחר מכן, ב־28 בפברואר 2023.

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

האם אזורי זמן משפיעים על התוצאה? לא. שני התאריכים מומרים לחצות ב־UTC לפני ספירת הימים, ולכן התוצאה נשארת זהה ללא קשר למיקום המשתמש או לשינויים בשעון הקיץ.

מדוע ספירת הימים שונה מחלוקת הימים ב־365.25? 365.25 הוא רק אורך ממוצע של שנה; הוא אינו עוקב אחר השנים המסוימות בטווח שהן שנים מעוברות באורך 366 ימים. ספירת הימים השלמים בין שני תאריכים אמיתיים בלוח השנה היא מדויקת.

מקורות

  1. Python dateutil — relativedelta, כלל החודשים והימים לחישוב גיל לפי לוח השנה שתואר לעיל.
  2. פלטפורמת Java — Period.between ו־ChronoUnit.DAYS.
  3. Microsoft Excel — פונקציית DATEDIF.
  4. תיעוד האינטרנט של MDN — Date
  5. Dershowitz, N., ו־Reingold, E. M. Calendrical Calculations: The Ultimate Edition. הוצאת אוניברסיטת קיימברידג', 2018.