באגים הקשורים לשעה ותאריך
בתוכנה, באגים הקשורים לשעה ותאריך הם באגים הגורמים לחישוב שגוי של זמן, שעה או תאריך וזמן מערכת, שמתרחש לרוב במעבר בין ימים, חודשים או שנים, או במצב של גלישה מגבולות הזמן המקסימלי שהוגדר במערכת. לבאגים אלה יש השלכות על החישובים התלויים בנתוני הזמן, והם עלולים להוביל לשגיאות קשות ולשיתוק פעולה של מערכות.
המקרה הידוע ביותר הוא באג 2000, אבל ידועים מקרים נוספים לאורך ההיסטוריה של המחשוב ובעתיד.
באגים היסטוריים
באג 1970
במהלך שנות ה-60 של המאה ה-20 במספר תוכנות היה נהוג לייצג את השנה באמצעות ספרה בודדת (0–9). כך היה יותר פשוט לרשום, למשל בשפות תכנות כמו COBOL. הבעיה אותרה ותוקנה עוד לפני 1970 ולא ידוע על נזק שנגרם כתוצאה מכך.
באג 1975
טווח השדה של השנה במערכת ההפעלה PDP-10 לא היה מסוגל להכיל יותר מידע החל מ-4 בינואר באותה שנה. נרשמו מספר תקלות. במטרה לפתור את הבעיה, פותח פורמט חלופי.[1]
באג 1978
מערכת ההפעלה OS/8 של PDP-8 משתמשת ב:
- 4 ביטים לחודש.
- 5 ביטים לתאריך שבו.
- 3 ביטים לשנה, כלומר מתמיכה בעד 8 (2 בחזקת 3) שנים (החל משנת 1970).[2][3]
בעיה זו זוהתה כשפותח COS-310 תבנית:אנ, ותאריכים נרשמו בצורה שונה.[4][5]
באג 1989
תוכנות מיינפריים מסוימות נכתבו כדי לקודד תאריכים כמספר הימים מאז 'תאריך אפס' ב-1 בינואר 1900, ואוחסנו כמספרים שלמים בינאריים בגודל 16 סיביות כולל סיבית סימן. ב-18 בספטמבר 1989, תוכנות אלה החלו להיכשל, כיוון שהתאריך היה בדיוק 32,768 (215) יום מאז תאריך האפס. ערכים ביום זה ואחריו אינם משתלבים במספר שלם של 16 סיביות בעל סיבית סימן, אלא מוצפים ומחזירים ערכים שליליים.
באג 1997
מערכת ההפעלה Domain/OS תבנית:אנ שהתבססה על חישוב זמן לפי ספירת 4 מיקרושניות החל מ-1 בינואר 1980, קרסה ב-2 בנובמבר, עת הגיעה ל-47 סיביות, ובכך הפכו מערכות לא מתוקנות לבלתי שמישות.תבנית:הערה
באג 1999
התרחשו מספר באגים בחודשים האחרונים של השנה, הקשורים בהתכוננות לקראת באג 2000, אך קיבלו פחות פרסום ממנו.
התהפכות ה-GPS הראשונה
תאריכי GPS מפורשים כמספר שבוע ומספר יום בשבוע, כאשר מספר השבוע מועבר כערך של עשר סיביות. המשמעות היא שכל 1,024 שבועות (7,168 ימים או כ-19.6 שנים) לאחר יום ראשון, 6 בינואר 1980 (תחילת ה-GPS), התאריך יתאפס שוב למועד זה; באג זה התרחש בפעם הראשונה בשעה 23:59:47 ביום שבת, 21 באוגוסט 1999,[6] בפעם השנייה בשעה 23:59:42 UTC ב-6 באפריל 2019, והוא יקרה שוב ב-20 בנובמבר 2038.[7] כדי לטפל בדאגה זו, הודעות ניווט GPS מודרניות משתמשות בשדה של 13 סיביות, שחוזר על עצמו רק כל 8,192 שבועות (57,344 ימים או כ-157 שנה), ולא יחזור לאפס עד לשנת 2137 לערך.
9/9/99
תבנית:ראו גם בתוכנות או מערכי נתונים רבים, "9/9/99" שימש כערך נוכל לציון תאריך שלא נפתר או כמסיים לציון שאין נתונים נוספים בערכה. הדבר העלה סוגיות עם הגעת התאריך הממשי שהוא מייצג, 9 בספטמבר 1999.תבנית:הערה[6]
באג 2000

תבנית:הפניה לערך מורחב תבנית:ראו גם
ייצוגים דו-ספרתיים של שנים
בשנה זו נוצרה בעיה מאחר שעד אותה שנה ספרות השנה הוצגו באמצעות שתי ספרות בלבד, מטעמי נוחות וחיסכון. מפתחי הקודים מעשרות שנים מלפני כן תיקנו את הבעיה ובפועל לא נגרמו נזקים משמעותיים.תבנית:הערה
בעיות המשך שנגרמו כתוצאה מתיקונים זמניים מסוימים לבאג 2000 צצו ויצוצו בנקודות שונות במאה ה-21. חלק מהתוכנות הותאמו לבאג 2000 על ידי המשך שימוש בשתי ספרות, אך בחירת שנה שרירותית שלפניה שנים אלו מתפרשות כ-20xx, ואחריה מתפרשות כ-19xx.[8]
לדוגמה, ייתכן שתוכנה שונתה כך שהיא מתייחסת לערכי שנה דו ספרתיים 00–68 כאל הכוונה לשנת 2000 עד 2068, ולערכים 69–99 כאל הכוונה ל-1969 עד 1999.[9] תוכנה כזו לא תוכל להתמודד נכון עם שנים מעבר ל-2068.
עבור יישומים הנדרשים לחשב שנת הלידה (או שנה אחרת בעבר), אלגוריתם כזה שימש זמן רב כדי להתגבר על בעיית שנת 1900, אך הוא לא הצליח לזהות אנשים מעל גיל 100.
באג 2001
ב-9 בספטמבר התרחש באג בסוגי פורמט קבצים בודדים מערכת ההפעלה Unix כאשר מספר השניות בזמן יוניקס הגיע למיליארד. הבאג יצר בעיה בסוגי קבצים שמשתמשים במספר "999,999,999" בשביל לייצג את סוף הקובץ.תבנית:הערה
באג 2010
חלק מהמערכות נתקלו בבעיות כשנכנסה שנת 2010. בעיה זו כונתה על ידי חלק מהתקשורת כבאג "2010" או "Y2.01k".[10]
המקור העיקרי לבעיות היה בלבול בין קידוד מספרים בבסיס הקסדצימלי לבין עשרוני בקידוד בינארי. המספרים 0 עד 9 מקודדים הן בהקסדצימלי והן בבינארי כ-0016 עד 0916. אך המספר 10 מקודד בהקסדצימלי כ-0A16 ובעשרוני בקידוד בינארי כ-1016. לפיכך 1016 בקידוד בינארי המתפרש בקידוד הקסדצימלי מייצג בטעות את המספר העשרוני 16.
לדוגמה, פרוטוקול ה-SMS משתמש בקידוד בינארי לתאריכים, כך שחלק מתוכנות הטלפון הנייד הציגו בצורה שגויה את תאריכי ההודעות בתור שנת 2016 במקום 2010. Windows Mobile הייתה התוכנה הראשונה שדווחה שהושפעה מהתקלות הללו; בחלק מהמקרים, Windows Mobile 6 תבנית:כ(WM6) שינה את התאריך של כל הודעת SMS נכנסת שנשלחה לאחר 1 בינואר 2010 משנת 2010 לשנת 2016.[11][12]
מערכות אחרות שנפגעו כוללות מסופי EFTPOS,[13] ו-PlayStation 3 (למעט דגם Slim).[14]
התקלה החמורה ביותר התרחשה בגרמניה, שם למעלה מ-20 מיליון כרטיסי בנק הפכו לבלתי שמישים, ובסיטיבנק בלגיה, שם שבבי זיהוי הלקוחות שלה בדיג'יפס הפסיקו לעבוד.[15]
באג 2011
תבנית:הפניה לערך מורחב טייוואן משתמשת באופן רשמי בלוח מינגו תבנית:אנ, הרואה את השנה הגרגוריאנית 1912 כשנה 1. לפיכך, השנה הגרגוריאנית 2011 היא השנה הטייוואנית ה-100, השנה הראשונה בת 3 ספרות.[16]
באג 2013
הגשושית פגיעה עמוקה של סוכנות החלל נאס"א איבדה קשר עם כדור הארץ באוגוסט 2013, אחרי שהשעון שבה ספר 232 עשיריות שנייה מאז 1 בינואר 2000.[17]
באג 2015
חלק מהטלפונים הסלולריים של סמסונג שהכילו ערכת שבבים של חברת Agere (כגון Samsung SGH-C170) מיאנו לעבור את התאריך 31 בדצמבר 2014. התאריך השתנה אוטומטית ל-2015, אבל חזר לתאריך הבסיס אחרי כל הפסקת מתח (כגון הוצאת סוללה).תבנית:דרוש מקור
באג 2017
הדקה האחרונה בשנת 2016 הייתה דקה מעוברת ועם כניסת השנה החדשה, נוצרו בעיות בגישה למספר שרתים.[18] טכנאים התגברו על הבעיה בתוך 90 דקות.
באג 2019
התהפכות ה-GPS השנייה
תאריכי GPS מפורשים כמספר שבוע ומספר יום בשבוע, כאשר מספר השבוע מועבר כערך של עשר סיביות. המשמעות היא שכל 1,024 שבועות (7,168 ימים או כ-19.6 שנים) לאחר יום ראשון, 6 בינואר 1980 (תחילת ה-GPS), התאריך יתאפס שוב למועד זה; באג זה התרחש בפעם הראשונה בשעה 23:59:47 ביום שבת, 21 באוגוסט 1999,[6] בפעם השנייה בשעה 23:59:42 UTC ב-6 באפריל 2019, והוא יקרה שוב ב-20 בנובמבר 2038.[7] כדי לטפל בדאגה זו, הודעות ניווט GPS מודרניות משתמשות בשדה של 13 סיביות, שחוזר על עצמו רק כל 8,192 שבועות (57,344 ימים או כ-157 שנה), ולא יחזור לאפס עד לשנת 2137 לערך.
מעבר לוח השנה היפני
תבנית:הפניה לערך מורחב ב-30 באפריל 2019 ויתר הקיסר אקיהיטו על תפקידו והעביר אותו לבנו נארוהיטו. כיוון שביפן, מכנים שנים באופן מסורתי לפי שמות התקופות המתאימות לתקופת שלטונו של כל קיסר, הדבר הביא לשם תקופה חדשה, תקופת ראיווה (令和), שהחלה עם כניסתו של נארוהיטו לכס המלוכה למחרת. מכיוון שהקיסר הקודם, הירוהיטו, נפטר ב-7 בינואר 1989 ותקופת שלטונו של אקיהיטו הייתה דומה בעיקר לתקופת העלייה בשימוש במחשבים, מרבית התוכנות לא נבדקו כדי להבטיח התנהגות נכונה בשינוי בתקופה. יתר על כן, הבדיקה הסתבכה בגלל העובדה ששם העידן החדש לא נחשף עד 1 באפריל 2019. לכן, צפויות טעויות מתוכנות שלא צפו עידן חדש.
באג 2020
WWE 2K20 ו-Star Wars Jedi: Fallen Order קרסו שניהם ב-1 בינואר 2020, כשהשנה התחלפה. ניתן לעקוף את התקלות רק על ידי איפוס השנה חזרה לשנת 2019 עד לתיקון התקלה.[19][20] בנוסף, Crystal Reports 8.5 לא הצליח ליצור דוחות ספציפיים החל משנת 2020.[21]
מוני חניה של Parkeon בניו יורק ובמקומות אחרים לא הצליחו לקבל כרטיסי אשראי כאמצעי תשלום החל משנת 2020. פותחה דרך לעקיפת הבעיה, אך נדרש לעדכן כל מונה בנפרד. בניו יורק המונים לא היו אמורים להיות מתוקנים עד ל-9 בינואר.[22][23]
בפולין, כ-5,000 קופות רושמות הפסיקו את הדפסת התאריך כראוי.[24]
שעוני ספורט חכמים של SUUNTO הראו שגיאה במחשוב ימי השבוע, שהוצגה בצעד +2 (כלומר: שישי (FRI) במקום רביעי (WED), שבת (SAT) במקום חמישי (THU) וכן הלאה). עבור שעונים של SUUNTO מדגם Spartan, תוקן הבאג עם שחרור הקושחה 2.8.32.[25]
Mac OS Classic
לוח הבקרה בגרסאות 6, 7 ו-8 של Mac OS Classic מאפשר לקבוע את התאריך רק עד ליום 31 בדצמבר 2019, אם כי המערכת מסוגלת להמשיך ולקדם את הזמן מעבר לאותו תאריך.[26][27]
באג 2021
משתמשי סמסונג דיווחו כי טלפונים הפועלים על עדכון One UI 3.0 האחרון או אנדרואיד 11 איבדו את הגישה לסוללה ולסטטיסטיקת הטעינה החל משנת 2021. מכשירים מושפעים לא דיווחו על סטטיסטיקות שימוש, ובכך יותירו את החלקים האלו ריקים.[28][29] דגמים ישנים יותר של Sony Bravia דיווחו על נתונים לא תקינים שמקבלים כשמנסים להגדיר תזכורות ללוח השידורים האלקטרוני.
באג 2022
תאריכים המאוחסנים בפורמט yymmddHHMM שהומרו למספר שלם מסומן של 32 סיביות גלשו ב-1 בינואר 2022, מפני ש-. מספרי העדכון של רכיבי סריקת תוכנות זדוניות של Microsoft Exchange הושפעו במיוחד היה, ונראה כי הם משמשים לבדיקה מתמטית לקביעת העדכון האחרון.[30][31]
מכוניות הונדה ואקורה שיוצרו בין 2004 ל-2012 המכילות מערכות ניווט GPS הציגו באופן שגוי את השנה כשנת 2002. בעיה זו נבעה מגלישה נומרית מתחילת ספירת ה-GPS. הונדה אישרה כי הבעיה תיפתר מעצמה באוגוסט 2022.[32][33]
באגים עתידיים צפויים
באג 2025
ביפן, מספר מערכות מחשבים ישנות משתמשות בלוח השנה היפני שלא עודכן, עדיין סופרות שנים לפי תקופת שווה. השנה 2025 מתאימה באותן מערכות לשנה ה-100 בתקופת שווה, מה שעלול לגרום לבעיות אם התוכנה מניחה שתי ספרות לשנה.[34]
באג 2028
בסוף שנות השבעים של המאה העשרים, במערכות Data General Nova ו-Eclipse, חברת המחשבים העולמית (שעושה יישומי איגודי אשראי) יצרה תבנית תאריך זו;תבנית:דרוש מקור
שדה תאריך של 16 סיביות:
- 128 שנים = 7 ביטים (תבנית:כ1900+128=2028)
- 12 חודשים = 4 ביטים
- 31 יום = 5 ביטים
תאריכים הושוו באופן ישיר באמצעות פונקציות ללא סיבית סימן.
אין מקרים ידועים של פורמט זה בשימוש כיום.
באג 2031
מערכות מסוימות, כמו Nucleus OS של מדיהטק תבנית:אנ, מגיעות רק עד 31 בדצמבר 2030.תבנית:מקור
באג 2032
Palm OS תבנית:אנ משתמש בשני מספרים שלמים בעלי סיבית סימן עם תקופת 1970, כמו גם במספרים שלמים ללא סיבית סימן עם תקופת 1904, עבור פונקציות מערכת שונות,[35] כגון עבור שעון מערכת ותאריכי קבצים. אמנם זה אמור לגרום לכך ש-Palm OS יהיה רגיש לבאג 2038, אך Palm OS משתמש גם בשדה של 7 סיביות לאחסון ערך השנה, עם ספירה של תקופה שונה משנת 1904, וכתוצאה מכך שנת המקסימום שלו היא (1904+127) 2031.[36]
באג 2034
רוב הטלפונים של Siemens Mobile יכולים לתמוך בתאריכים רק עד 2033-12-31.תבנית:מקור
באג 2036
ל-Network Time Protocol יש בעיית גלישה הקשורה לבאג 2038, המתבטאת בשעה 06:28:16 UTC ב-7 בפברואר 2036, ולא בשנת 2038. חותמות הזמן של 64 סיביות ש-NTP משתמש בהן מורכבות מחלק של 32 סיביות עבור שניות וחלק של 32 סיביות לשנייה חלקית, מה שמקנה ל-NTP סולם זמן שמתהפך כל 232 שניות (כ-136 שנה או ליתר דיוק, 136 שנים, 70 ימים, 6 שעות, 28 דקות ו-16 שניות) ורזולוציה תאורטית של 2−32 שניות (233 פיקושניות). NTP משתמש בתקופה שמתחילה ב-1 בינואר 1900. ההתהפכות הראשונה מתרחשת בשנת 2036, לפני באג 2038 של UNIX.[37][38]
באג 2038
התהפכות זמן היוניקס
תבנית:הפניה לערך מורחב מערכות יוניקס המקוריות מותאמות למחשבי 32 ביט, ומונה הזמן בהן הוא מספר מסומן (כלומר חיובי או שלילי) שבו רק 31 ביטים מיועדים למנייה וביט אחד לסימן. המונה סופר שניות מ-1 בינואר 1970 בחצות, והוא יגלוש כשיגיע ל-2,147,483,647 ב-19 בינואר 2038. מרגע זה הוא יהפוך סימן ויתחיל למנות מ-תבנית:משמאל לימין המייצג את 13 בדצמבר 1901.תבנית:הערה
בעיה זו טופלה ברוב מערכות ההפעלה המודרניות של יוניקס ומערכות הפעלה של יוניקס על ידי אחסון זמן המערכת כמספר שלם של 64 סיביות, אם כי עדיין יש צורך לשנות גם יישומים, פרוטוקולים ופורמטי קבצים בודדים. מערכות יוניקס ישנות של 32 ביט שמחשבות תאריכים עתידיים, ייתקלו בבאג עוד לפני 2038.
התהפכות ה-DVB
למערכת שידור הווידאו הדיגיטלי (DVB) יש בעיה ב-22 באפריל 2038, כאשר 16 הסיביות המשמשות להעברת ה-Modified Julian Days תבנית:כ(MJD) המשמשות לתזמון מדריכים אלקטרוניים יופעלו מאפס. המפרט ETSI EN 300 368 מציין בנספח ג' כי נוסחאות ה-MJD המסופקות תקפות עד 28 בפברואר 2100, אך לא מזכיר את המגבלות שהוטלו על ידי 16 הסיביות המשמשות להעברת הערך המתקבל.תבנית:מקור
התהפכות ה-GPS השלישית
תאריכי GPS מפורשים כמספר שבוע ומספר יום בשבוע, כאשר מספר השבוע מועבר כערך של עשר סיביות. המשמעות היא שכל 1,024 שבועות (7,168 ימים או כ-19.6 שנים) לאחר יום ראשון, 6 בינואר 1980 (תחילת ה-GPS), התאריך יתאפס שוב למועד זה; באג זה התרחש בפעם הראשונה בשעה 23:59:47 ביום שבת, 21 באוגוסט 1999,[6] בפעם השנייה בשעה 23:59:42 UTC ב-6 באפריל 2019, והוא יקרה שוב ב-20 בנובמבר 2038.[7] כדי לטפל בדאגה זו, הודעות ניווט GPS מודרניות משתמשות בשדה של 13 סיביות, שחוזר על עצמו רק כל 8,192 שבועות (57,344 ימים או כ-157 שנה), ולא יחזור לאפס עד לשנת 2137 לערך.
באג 2040
מחשבי מקינטוש מוקדמים של אפל מאחסנים זמן בשעונים בזמן אמת תבנית:אנג (RTC) שלהם ובמערכות הקבצים HFS תבנית:אנ כמספר שניות של 32 סיביות מאז 00:00:00 ב-1 בינואר 1904. לאחר 06:28:15 ב-6 בפברואר 2040, הזמן יחזור ל-1904.[39] HFS+ תבנית:אנ, פורמט ברירת המחדל של כל מחשבי מקינטוש האחרונים של אפל, מושפע גם הוא. מערכת הקבצים המחליפה של אפל תבנית:אנ פותרת בעיה זו.
ProDOS למחשבי אפל II תומך במספרי שנה דו ספרתיים בלבד. כדי להימנע מבעיות של באג 2000, אפל פרסמה הערה טכנית לפיה מספר השנה אמור לייצג את 1940–2039.[40] תוכנה לפלטפורמה עשויה להציג באופן שגוי תאריכים החל משנת 2040. מאמץ של צד שלישי מתבצע כדי לעדכן את תוכנת ProDOS ותוכנות היישום לכדי תמיכה בשנים עד 2924.[41]
באג 2042
ב-18 בספטמבר 2042 שעון היום (TODC) יתהפך במחשבי IBM מיינפריים תבנית:אנג S/370 וכן בדורותיהם הבאים, כולל הzSeries.[42]
שעוני יום ישנים יותר יושמו כמספר של 64 סיביות של 2−12 מיקרו שניות (0.244 ננו-שניות), והבסיס הסטנדרטי היה 1 בינואר 1900 UT. ביולי 1999 הוכרז על שעון ה-TODC המורחב, שהאריך את השעון ימינה (כלומר, הביטים המורחבים פחות משמעותיים מהביטים המקוריים). הרזולוציה בפועל תלויה במודל, אך הפורמט עקבי, ולכן יתהפך לאחר 252 מיקרו שניות.[42]
ערך ה-TODC נגיש לתוכנות מצב משתמש ומשמש לעיתים קרובות לתזמון וליצירת מזהים ייחודיים לאירועים.
בעוד ש-IBM הגדירה והטמיעה פורמט חומרה ארוך יותר במכונות האחרונות (128 סיביות), שמאריך את הטיימר בשני הקצוות לפחות ב-8 סיביות נוספות, תוכנות רבות ממשיכות להסתמך על פורמט 64 סיביות שנותר כתת-קבוצה נגישה של הטיימר הארוך יותר.
באג 2048
למערכת ATSC תהיה בעיה דומה לנושא ה-DVB שתוארה לעיל לאחר 2048 עקב השימוש שלה בשניות GPS של 32 סיביות שמתחילות מ-6 בינואר 1980.
לוגיקת תכנון הקיבולת במערכת ה-ERPתבנית:כ, SAP S/4HANA, תומכת בתאריכי סיום בלבד עד 19 בינואר 2048 (24855 ימים החל מ-1 בינואר 1980). זה נוגע למשל לתכנון הייצור, התחזוקה והפיקוח.[43]
באג 2050
מחשבוני טקסס אינסטרומנטס שונים ממשפחות TI BA II Plusתבנית:כ, TI BA II Plus Professionalתבנית:כ, TI-83תבנית:כ, TI-84 ו-NSpire תומכים בפונקציה בשם תבנית:קוד המשמשת כדי לחשב את מספר הימים בין תאריכים. פונקציה זו מקבלת תאריכים בין התאריכים 1950-01-01 (1 בינואר 1950) ו-2049-12-31 (31 בדצמבר 2049) בלבד. תחום פוטנציאלי אחד שבו הבאג יתחיל לגרום לבעיות בשנת 2020 והלאה הוא בחישוב משכנתאות ל-30 שנים ומעלה.[44][45]
באג 2051
Wii ו-נינטנדו 3DS יתהפכו בסוף 31 בדצמבר 2050, ויחזרו חזרה עד ל-1 בינואר 2000. חלק מהמשחקים בקונסולות שיש להם מערכות לוח שנה משלהם יחזרו לשנה אחרת שנקבעה על פי המשחק; דוגמה לכך הוא המשחק Animal Crossing: New Leaf, שיחזור חזרה ל-1 בינואר 2012.[46]
באג 2061
הנינטנדו סוויץ' לא מאפשרים למשתמשים להכניס תאריכים מעבור ל-2060-12-31. עם זאת, המערכת עדיין מסוגלת לחשב זמן מעבר לתאריך זה.[47]
באג 2079
ימים 32,768 ו-65,536
תוכניות המאחסנות תאריכים כמספר הימים מאז תאריך שרירותי הן פגיעות יותר לאפקטים של התהפכות אם הערכים אינם רחבים מספיק כדי לאפשר לערכי התאריך טווח זמן מספיק גדול. ערכים בינאריים של 16 סיביות מתהפכים לאחר 32,768 (215) ימים מיום תחילת הספירה, ומתחילים לייצר ערכים שליליים. חלק ממערכות המיינפריים חוו כשלים בתוכנה כיוון שקודדו תאריכים כמספר הימים מאז 1 בינואר 1900, שהפיקו מספרי שנים שליליים בלתי צפויים ב-18 בספטמבר 1989. באופן דומה, ספירות בינאריות של 16 סיביות של ימים גולשות לאחר 65,536 (216) ימים. עבור תוכנות המשתמשות בתקופה שמתחילה ב-1 בינואר 1900, בעיה זו תתרחש ב-6 ביוני 2079.תבנית:הערה
באג 2080
חלק מהטלפונים של נוקיה (אם לא כולם) המריצים את סדרה 40 (כמו Nokia X2-00) תומכים רק בתאריכים עד 2079-12-31 (31 בדצמבר 2079) ויסרבו לשנות תאריכים מעבר ל-2079-12-31. הפתרון הוא להשתמש בשנת 1996 במקום שנת 2080 כשנה מעוברת תואמת להצגת היום הנכון בשבוע, התאריך והחודש על המסך הראשי.
מערכות המאחסנות את השנה כערך דו ספרתי תבנית:כ00..99 באופן פנימי בלבד (כמו רבים מה-RTC) עשויות להתהפך בין 2079-12-31 לתקופת ה-IBM PC ו-DOS של 1980-01-01.
באג 2100
תבנית:הפניה לערך מורחב מערכות DOS ו-Microsoft Windows תומכות בממשק תכנות יישומים עד ל-31 בדצמבר 2100, כאשר דבר זה מוצהר על-ידם. הסיבה היא שמערכות אלו לא מתוכנתות לכל הכללים הייחודיים של שנה מעוברת שיחולו בשנה זו.תבנית:הערה ייתכנו בעיות לא צפויות ב-1 בינואר של שנה זו.
נינטנדו DS יתהפך בסוף 31 בדצמבר 2099, ויחזור חזרה ל-1 בינואר 2000.תבנית:הערה
בעיה נוספת תופיע בסוף 28 בפברואר 2100, כיוון ששנת 2100 אינה שנה מעוברת, ואילו יישומים נפוצים רבים של האלגוריתם לשנה מעוברת אינם שלמים או פשוטים, ולכן יניחו בטעות שמדובר בשנה מעוברת. זה יגרום לתאריך להתהפך באופן שגוי מ-28 בפברואר 2100 ל־29 בפברואר 2100, במקום ישירות ל-1 במרץ 2100.
באג 2106
פורמטים רבים של קבצים, פרוטוקולי תקשורת וממשקי יישומים קיימים משתמשים בגרסה של תבנית התאריך תבנית:קוד של יוניקס, המאחסנת את מספר השניות מאז תקופת יוניקס (חצות לפי הזמן האוניברסלי המתואם, 1 בינואר 1970) כמספר שלם בינארי של 32 סיביות. ערך זה יתהפך ב-7 בפברואר 2106 בשעה 06:28:15. כלומר, בשלב זה מספר השניות מאז 1 בינואר 1970 הוא FFFF FFFF בבסיס הקסדצימלי, ויגמר המקום בשדה המאפשר רישום (בעיית ייצוג אחסון זו אינה תלויה בתוכנות המאחסנות באופן פנימי ופועלות בזמני מערכת כערכים שלמים של 64 סיביות).
באג 2108
חותמות הזמן של התאריכים, המאוחסנות במערכות הקבצים FAT, שהוצגו במקור ב-תבנית:כ86-DOS 0.42 ב-25 בפברואר 1981 והועברו ל-תבנית:כMS-DOSתבנית:כ, PC DOSתבנית:כ, DR-DOS וכו', תגלושנה בסוף 31 בדצמבר 2107. חותמות התאריך לשינוי האחרונות נשמרות ברישומי התיקייה, עם השנה מיוצגת כמספר של 7 סיביות (0–127), יחסית לשנת 1980, ובכך אין אפשרות לציין תאריכים כלשהם בשנת 2108 ואילך. פונקציות ה-API שהוגדרו כדי לאחזר תאריכים אלה תומכות באופן רשמי רק בתאריכים עד 31 בדצמבר 2099.
זה ישפיע גם על פורמט הקבצים ZIP, מכיוון שהוא משתמש בחותמות זמן לשינוי קובצי FAT באופן פנימי.
באג 2137
תאריכי GPS מפורשים כמספר שבוע ומספר יום בשבוע, כאשר מספר השבוע בתחילה משתמש בערך 10 סיביות והודעות ניווט GPS מודרניות באמצעות שדה 13 סיביות. מערכות של 10 סיביות מתהפכות כל 1,024 שבועות (כ-19.6 שנים) לאחר יום ראשון, 6 בינואר 1980 (תחילת ה-GPS), ומערכות 13 סיביות מתהפכות כל 8,192 שבועות. מערכות של 13 סיביות יתהפכו לאפס בשנת 2137.[6][7]
באג 2150
תוכנות המחשבות תאריכים של לוח השנה העברי עלולות לא להיות פעילות כאשר שדה השנה, המתחשב בארבע אותיות כציון השנה, יצטרך לחשב תאריך בן חמש אותיות החל מא' בתשרי ה'תתקי"א (21 בספטמבר 2150).תבנית:הערה עלולים להיתקל בבעיה זו עוד לפני כן בחישוב של תאריכים עתידיים.
באג 2262
חלק ממערכות המעקב אחרי הזמן שחלף סופרות ננו-שניות מאז 1970 תוך שימוש במספר שלם בגודל 64 סיביות כולל סיבית סימן, אשר יגלוש ב-11 באפריל 2262, ב-23:47:16. ממשק ה-UnixNano של שפת התכנות Go הוא דוגמה אחת.[48] דוגמאות אחרות כוללות את אובייקט חותם הזמן ב-Pandas של פייתון,[49] ה-chrono::system_clock של C++[50] וטיימרים של QEMU.[51]
באגים שיתרחשו עוד יותר מ-1,000 שנים
כאשר נוצרת סביבת עבודה של מחשבים ובפרט תוכנות ויישומים מניחים כי בעתיד הרחוק כבר לא יהיה בהן שימוש, שכן כל המין האנושי ובפרט הטכנולוגיה ישנו פניהם ללא היכר. בנוסף, בעיות תאורטיות יותר רחוקות מציבות סימן שאלה האם בכלל ייתכנו חיים על פני כדור הארץ ואף של היקום. למרות זאת, בסיסי נתונים עובדים על חישובים שונים ולכן, יש לדעת על אותם באגים צפויים.תבנית:ש עם זאת, יש לקחת בחשבון כי בשנים יותר רחוקות אורך היממה צפוי להתארך אמנם רק בשינויים זעירים, אך אם עדיין יישאר זכר לתכנות של ימינו הרי שספירה לפי שניות עלולה להשתבש.
באגים 4000 ו-8000
בעוד שרוב התוכנות (כולל אקסל, JavaScript ו-R) מזהות בצורה נכונה את 4000 ו-8000 כשנים מעוברות (מכיוון שהן מתחלקות ב-400), SAS לא מזהה את שנים אלה כשנים מעוברות, כתוצאה מ"כלל 4000 שנים" לא רשמי.
לפיכך, המרות תאריכים בין SAS לתוכנות אחרות ייצאו מהסנכרון לאחר 28 בפברואר 4000, אלא אם כן תוכנת SAS מתחשבת בפער הזה.[52][53]
באג 4501
Microsoft Outlook משתמש בתאריך 1 בינואר 4501 כשומר מקום ל-"none" או "empty".[54][55]
באג 10000
באג 10,000 תבנית:אנ יתרחש כאשר המחשב יצטרך לזהות שנה בעלת חמש ספרות במקום ארבע. לפי הערכות, גם אם תתקיים האנושות עד אז, כל מערכות המחשבים ישתנו ללא היכר עד אז ויכללו פתרון לבעיה זו. עם זאת, בקרב מחקרים (בעיקר בפיזיקה ואסטרונומיה) נדרשים חישובים לתהליכים שאורכים אלפי שנים - למשל, בטיפול בפסולת גרעינית. יישומים אלה נאלצים להתמודד גם עם בעיית שנת ה-0. לכל שנים שהן חזקות עתידיות של 10 יש פוטנציאל לבעיות דומות.
במחשבי חברת אפל באג זה עלול להתרחש בשנת 10,001 בשל שיטת חישוב שונה של תאריכים.
ארגון בשם Long Now Foundation תבנית:אנ פועל לשם הגברת המודעות לבאג ומנסה למצוא פתרונות מבעוד מועד.[56] "תבנית:RFC - Y10K and Beyond" דן בפתרונות לטיפול בבעיה זו.
באג 30,828
החל מ-14 בספטמבר 30,828, Windows לא יקבל תאריכים מעבר ליום זה בעת ההפעלה, Windows יתלונן על "זמן מערכת לא חוקי". הסיבה לכך היא שערך ה-FILETIME ב-Windows, שהוא ערך 64 סיביות המתאים למספר המרווחים של 100 ננו-שניות מאז 1 בינואר 1601, בשעה 00:00:00.0000000 UTC, יעלה על הערך המרבי האפשרי שלו באותו יום בשעה 02:48:05.4775808 UTC.[57]
באגים 32,768 ו-65,536
תוכנות המעבדות שנים כערכי 16 סיביות עשויות להיתקל בבעיות עם השנים 32,768 או 65,536, תלוי אם מתייחסים לערך כמספר שלם עם סיבית סימן או ללא.
עבור באג 32,768, שנים אחרי 32,767 יכולות להתפרש כמספרים שליליים, החל משנת תבנית:כ−32,768.[58] סביר יותר שבאג 65,536 יתבטא בכך שהוא יציג את השנה 65,536 כשנה 0.[59]
באג 100,000
שנת 100,000 תהיה השנה הגרגוריאנית הראשונה בעלת שש ספרות, וככזו, היא עלולה לגרום לבאגים גדולים.
באג 275,760
ה-API התאריך ב-JavaScript שומר תאריכים כמספר המילי-שניות שעברו מאז 1 בינואר 1970. לתאריכים יש טווח של ±100,000,000 יום, כלומר תוכנות שנכתבות ב-JavaScript ומשתמשות ב-API התאריך לא יוכלו לשמור תאריך מעבר ל-13 בספטמבר 275,760.
באג 292,277,026,596
שנים בעייתיות מסוימות מתרחשות בעתיד הרחוק מאוד, הרבה מעבר לתוחלת החיים האפשרית של כדור הארץ, השמש, האנושות, ואפילו מעבר לכמה תחזיות של חייו של היקום, שהן מכונות בעיקר כעניינים בעלי עניין תאורטי, בדיחות או אינדיקציות לכך שבעיה קשורה איננה נפתרת באמת, לפי כל הגדרה סבירה של "נפתרה".
באג 292,277,026,596 (בערך תבנית:כ2.9×1011 שנים בעתיד) יתרחש כאשר זמן יוניקס 64 סיביות יגלוש ב-UTC 15:30:08 ביום ראשון, 4 בדצמבר 292,277,026,596 לספירה.[60][61] בעיה דומה תתרחש עם זמן יוניקס של 128 סיביות המאוחסן כננו-שניות, אשר יגלוש בשנה 5,391,559,471,918,239,498,981 לספירה (2127/1000000000, או כ-תבנית:כ1.7014118×1029 שניות לאחר תחילת ספירת היוניקס בשנת 1970).
גלישת זמן יחסית
מיקרוסופט
ב-Windows 7תבנית:כ, Windows Server 2003תבנית:כ, תבנית:כWindows Server 2008 ו-Windows Vista, מידע על התחלת חיבור TCP נשמר במאיות שנייה, תוך שימוש במספר שלם בגודל 32 סיביות ללא סיבית סימן, מה שגרם לגלישה ולחיבורי TCP להיכשל לאחר 497 ימים.[62]
בואינג
במטוס בואינג 787 היו לפחות שתי בעיות תוכנה הקשורות לאחסון זמן. בשנת 2015 דווח על שגיאה בה הזמן נשמר במאיות שנייה, תוך שימוש במספר שלם בגודל 32 סיביות כולל סיבית סימן, והמערכות קרסו לאחר 248 יום.[63] בשנת 2020 הוציאה ה-FAA הנחיית כשירות לטיסה לבעיה, שאם המטוס לא יכובה לחלוטין לפני שהגיע לזמן פעילות של 51 ימים רצופים, המערכות שלו תחלנה להציג נתונים מטעים.[64]
קישורים חיצוניים
הערות שוליים
- ↑ תבנית:קישור כללי
- ↑ 1970 – 1977
- ↑ תבנית:קישור כללי
- ↑ "COS-310, מערכת ההפעלה המסחרית של DEC עבור PDP-8, נתמכת... אבל עם פורמט קובץ טקסט חדש. מערכת הקבצים כמעט זהה ל-OS/8, אך התאריכים נרשמים אחרת..."
- ↑ תבנית:קישור כללי
- ↑ 6.0 6.1 6.2 6.3 6.4 תבנית:קישור כללי
- ↑ 7.0 7.1 7.2 7.3 תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:Ynet
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:Cite web
- ↑ תבנית:Cite web
- ↑ תבנית:Cite web
- ↑ תבנית:Cite web
- ↑ תבנית:Cite web
- ↑ תבנית:Cite web
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:צ-ספר
- ↑ Apple Computer, Inc., Inside Macintosh, Volume II, Addison Wesley, 1985, p. 369
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ 42.0 42.1 תבנית:צ-ספר
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:Cite web
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ In the year 9999...., Chris Hemedinger
- ↑ The Conversion of Date and Time Values between SAS Data Sets and Microsoft Access Database, SAS 9.4 documentation
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:Cite web
- ↑ תבנית:קישור כללי
- ↑ תבנית:Cite web
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי
- ↑ תבנית:קישור כללי