באגים הקשורים לשעה ותאריך

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

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

==באגים היסטוריים==
=== באג 1970 ===
במהלך שנות ה-60 של המאה ה-20 במספר תוכנות היה נהוג לייצג את השנה באמצעות ספרה בודדת (0–9). כך היה יותר פשוט לרשום, למשל בשפות תכנות כמו COBOL. הבעיה אותרה ותוקנה עוד לפני 1970 ולא ידוע על נזק שנגרם כתוצאה מכך.

=== באג 1975 ===
טווח השדה של השנה במערכת ההפעלה PDP-10 לא היה מסוגל להכיל יותר מידע החל מ-4 בינואר באותה שנה. נרשמו מספר תקלות. במטרה לפתור את הבעיה, פותח פורמט חלופי.<ref></ref>

=== באג 1978 ===
מערכת ההפעלה OS/8 של PDP-8 משתמשת ב:
* 4 ביטים לחודש.
* 5 ביטים לתאריך שבו.
* 3 ביטים לשנה, כלומר מתמיכה בעד 8 (2 בחזקת 3) שנים (החל משנת 1970).<ref>1970 – 1977</ref><ref></ref>

בעיה זו זוהתה כשפותח COS-310 , ותאריכים נרשמו בצורה שונה.<ref>"COS-310, מערכת ההפעלה המסחרית של DEC עבור PDP-8, נתמכת... אבל עם פורמט קובץ טקסט חדש. מערכת הקבצים כמעט זהה ל-OS/8, אך התאריכים נרשמים אחרת..."</ref><ref></ref>

=== באג 1989 ===
תוכנות מיינפריים מסוימות נכתבו כדי לקודד תאריכים כמספר הימים מאז 'תאריך אפס' ב-1 בינואר 1900, ואוחסנו כמספרים שלמים בינאריים בגודל 16 סיביות כולל סיבית סימן. ב-18 בספטמבר 1989, תוכנות אלה החלו להיכשל, כיוון שהתאריך היה בדיוק 32,768 (2<sup>15</sup>) יום מאז תאריך האפס. ערכים ביום זה ואחריו אינם משתלבים במספר שלם של 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,<ref name=":0"></ref> בפעם השנייה בשעה 23:59:42 UTC ב-6 באפריל 2019, והוא יקרה שוב ב-20 בנובמבר 2038.<ref name=":1"></ref> כדי לטפל בדאגה זו, הודעות ניווט GPS מודרניות משתמשות בשדה של 13 סיביות, שחוזר על עצמו רק כל 8,192 שבועות (57,344 ימים או כ-157 שנה), ולא יחזור לאפס עד לשנת 2137 לערך.

==== 9/9/99 ====

בתוכנות או מערכי נתונים רבים, "9/9/99" שימש כערך נוכל לציון תאריך שלא נפתר או כמסיים לציון שאין נתונים נוספים בערכה. הדבר העלה סוגיות עם הגעת התאריך הממשי שהוא מייצג, 9 בספטמבר 1999.<ref name=":0" />

=== באג 2000 ===
לוח אלקטרוני בצרפת, שהוצג בכניסה לבית ספר ב[[נאנט. כתוצאה מבאג 2000, הלוח הראה את התאריך "3 בינואר 1900".]]

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

בעיות המשך שנגרמו כתוצאה מתיקונים זמניים מסוימים לבאג 2000 צצו ויצוצו בנקודות שונות במאה ה-21. חלק מהתוכנות הותאמו לבאג 2000 על ידי המשך שימוש בשתי ספרות, אך בחירת שנה שרירותית שלפניה שנים אלו מתפרשות כ-20xx, ואחריה מתפרשות כ-19xx.<ref></ref>

לדוגמה, ייתכן שתוכנה שונתה כך שהיא מתייחסת לערכי שנה דו ספרתיים 00–68 כאל הכוונה לשנת 2000 עד 2068, ולערכים 69–99 כאל הכוונה ל-1969 עד 1999.<ref></ref> תוכנה כזו לא תוכל להתמודד נכון עם שנים מעבר ל-2068.

עבור יישומים הנדרשים לחשב שנת הלידה (או שנה אחרת בעבר), אלגוריתם כזה שימש זמן רב כדי להתגבר על בעיית שנת 1900, אך הוא לא הצליח לזהות אנשים מעל גיל 100.

=== באג 2001 ===
ב-9 בספטמבר התרחש באג בסוגי פורמט קבצים בודדים מערכת ההפעלה Unix כאשר מספר השניות בזמן יוניקס הגיע למיליארד. הבאג יצר בעיה בסוגי קבצים שמשתמשים במספר "999,999,999" בשביל לייצג את סוף הקובץ.

=== באג 2010 ===
חלק מהמערכות נתקלו בבעיות כשנכנסה שנת 2010. בעיה זו כונתה על ידי חלק מהתקשורת כבאג "2010" או "Y2.01k".<ref></ref>

המקור העיקרי לבעיות היה בלבול בין קידוד מספרים בבסיס הקסדצימלי לבין עשרוני בקידוד בינארי. המספרים 0 עד 9 מקודדים הן בהקסדצימלי והן בבינארי כ-00<sub>16</sub> עד 09<sub>16</sub>. אך המספר 10 מקודד בהקסדצימלי כ-0A<sub>16</sub> ובעשרוני בקידוד בינארי כ-10<sub>16</sub>. לפיכך 10<sub>16</sub> בקידוד בינארי המתפרש בקידוד הקסדצימלי מייצג בטעות את המספר העשרוני 16.

לדוגמה, פרוטוקול ה-SMS משתמש בקידוד בינארי לתאריכים, כך שחלק מתוכנות הטלפון הנייד הציגו בצורה שגויה את תאריכי ההודעות בתור שנת 2016 במקום 2010. Windows Mobile הייתה התוכנה הראשונה שדווחה שהושפעה מהתקלות הללו; בחלק מהמקרים, Windows Mobile 6 (WM6) שינה את התאריך של כל הודעת SMS נכנסת שנשלחה לאחר 1 בינואר 2010 משנת 2010 לשנת 2016.<ref></ref><ref></ref>

מערכות אחרות שנפגעו כוללות מסופי EFTPOS,<ref></ref> ו-PlayStation 3 (למעט דגם Slim).<ref></ref>

התקלה החמורה ביותר התרחשה בגרמניה, שם למעלה מ-20 מיליון כרטיסי בנק הפכו לבלתי שמישים, ובסיטיבנק בלגיה, שם שבבי זיהוי הלקוחות שלה בדיג'יפס הפסיקו לעבוד.<ref></ref>

=== באג 2011 ===

טייוואן משתמשת באופן רשמי בלוח מינגו , הרואה את השנה הגרגוריאנית 1912 כשנה 1. לפיכך, השנה הגרגוריאנית 2011 היא השנה הטייוואנית ה-100, השנה הראשונה בת 3 ספרות.<ref></ref>

=== באג 2013 ===
הגשושית פגיעה עמוקה של סוכנות החלל נאס"א איבדה קשר עם כדור הארץ באוגוסט 2013, אחרי שהשעון שבה ספר 2<sup>32</sup> עשיריות שנייה מאז 1 בינואר 2000.<ref></ref>

=== באג 2015 ===
חלק מהטלפונים הסלולריים של סמסונג שהכילו ערכת שבבים של חברת Agere (כגון Samsung SGH-C170) מיאנו לעבור את התאריך 31 בדצמבר 2014. התאריך השתנה אוטומטית ל-2015, אבל חזר לתאריך הבסיס אחרי כל הפסקת מתח (כגון הוצאת סוללה).

=== באג 2017 ===
הדקה האחרונה בשנת 2016 הייתה דקה מעוברת ועם כניסת השנה החדשה, נוצרו בעיות בגישה למספר שרתים.<ref></ref> טכנאים התגברו על הבעיה בתוך 90 דקות.

=== באג 2019 ===
==== התהפכות ה-GPS השנייה ====
תאריכי GPS מפורשים כמספר שבוע ומספר יום בשבוע, כאשר מספר השבוע מועבר כערך של עשר סיביות. המשמעות היא שכל 1,024 שבועות (7,168 ימים או כ-19.6 שנים) לאחר יום ראשון, 6 בינואר 1980 (תחילת ה-GPS), התאריך יתאפס שוב למועד זה; באג זה התרחש בפעם הראשונה בשעה 23:59:47 ביום שבת, 21 באוגוסט 1999,<ref name=":0" /> בפעם השנייה בשעה 23:59:42 UTC ב-6 באפריל 2019, והוא יקרה שוב ב-20 בנובמבר 2038.<ref name=":1" /> כדי לטפל בדאגה זו, הודעות ניווט 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 עד לתיקון התקלה.<ref></ref><ref></ref> בנוסף, Crystal Reports 8.5 לא הצליח ליצור דוחות ספציפיים החל משנת 2020.<ref></ref>

מוני חניה של Parkeon בניו יורק ובמקומות אחרים לא הצליחו לקבל כרטיסי אשראי כאמצעי תשלום החל משנת 2020. פותחה דרך לעקיפת הבעיה, אך נדרש לעדכן כל מונה בנפרד. בניו יורק המונים לא היו אמורים להיות מתוקנים עד ל-9 בינואר.<ref></ref><ref></ref>

בפולין, כ-5,000 קופות רושמות הפסיקו את הדפסת התאריך כראוי.<ref></ref>

שעוני ספורט חכמים של SUUNTO הראו שגיאה במחשוב ימי השבוע, שהוצגה בצעד +2 (כלומר: שישי (FRI) במקום רביעי (WED), שבת (SAT) במקום חמישי (THU) וכן הלאה). עבור שעונים של SUUNTO מדגם Spartan, תוקן הבאג עם שחרור הקושחה 2.8.32.<ref></ref>

==== Mac OS Classic ====
לוח הבקרה בגרסאות 6, 7 ו-8 של Mac OS Classic מאפשר לקבוע את התאריך רק עד ליום 31 בדצמבר 2019, אם כי המערכת מסוגלת להמשיך ולקדם את הזמן מעבר לאותו תאריך.<ref></ref><ref></ref>

=== באג 2021 ===
משתמשי סמסונג דיווחו כי טלפונים הפועלים על עדכון One UI 3.0 האחרון או אנדרואיד 11 איבדו את הגישה לסוללה ולסטטיסטיקת הטעינה החל משנת 2021. מכשירים מושפעים לא דיווחו על סטטיסטיקות שימוש, ובכך יותירו את החלקים האלו ריקים.<ref></ref><ref></ref> דגמים ישנים יותר של Sony Bravia דיווחו על נתונים לא תקינים שמקבלים כשמנסים להגדיר תזכורות ללוח השידורים האלקטרוני.

=== באג 2022 ===
תאריכים המאוחסנים בפורמט yymmddHHMM שהומרו למספר שלם מסומן של 32 סיביות גלשו ב-1 בינואר 2022, מפני ש-<math>2^{31}=2147483648
</math>. מספרי העדכון של רכיבי סריקת תוכנות זדוניות של Microsoft Exchange הושפעו במיוחד היה, ונראה כי הם משמשים לבדיקה מתמטית לקביעת העדכון האחרון.<ref></ref><ref></ref>

מכוניות הונדה ואקורה שיוצרו בין 2004 ל-2012 המכילות מערכות ניווט GPS הציגו באופן שגוי את השנה כשנת 2002. בעיה זו נבעה מגלישה נומרית מתחילת ספירת ה-GPS. הונדה אישרה כי הבעיה תיפתר מעצמה באוגוסט 2022.<ref></ref><ref></ref>

==באגים עתידיים צפויים==
=== באג 2025 ===
ביפן, מספר מערכות מחשבים ישנות משתמשות בלוח השנה היפני שלא עודכן, עדיין סופרות שנים לפי תקופת שווה. השנה 2025 מתאימה באותן מערכות לשנה ה-100 בתקופת שווה, מה שעלול לגרום לבעיות אם התוכנה מניחה שתי ספרות לשנה.<ref></ref>

=== באג 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, עבור פונקציות מערכת שונות,<ref></ref> כגון עבור שעון מערכת ותאריכי קבצים. אמנם זה אמור לגרום לכך ש-Palm OS יהיה רגיש לבאג 2038, אך Palm OS משתמש גם בשדה של 7 סיביות לאחסון ערך השנה, עם ספירה של תקופה שונה משנת 1904, וכתוצאה מכך שנת המקסימום שלו היא (1904+127) 2031.<ref></ref>

=== באג 2034 ===
רוב הטלפונים של Siemens Mobile יכולים לתמוך בתאריכים רק עד 2033-12-31.

=== באג 2036 ===
ל-Network Time Protocol יש בעיית גלישה הקשורה לבאג 2038, המתבטאת בשעה 06:28:16 UTC ב-7 בפברואר 2036, ולא בשנת 2038. חותמות הזמן של 64 סיביות ש-NTP משתמש בהן מורכבות מחלק של 32 סיביות עבור שניות וחלק של 32 סיביות לשנייה חלקית, מה שמקנה ל-NTP סולם זמן שמתהפך כל 2<sup>32</sup> שניות (כ-136 שנה או ליתר דיוק, 136 שנים, 70 ימים, 6 שעות, 28 דקות ו-16 שניות) ורזולוציה תאורטית של 2<sup>−32</sup> שניות (233 פיקושניות). NTP משתמש בתקופה שמתחילה ב-1 בינואר 1900. ההתהפכות הראשונה מתרחשת בשנת 2036, לפני באג 2038 של UNIX.<ref></ref><ref></ref>

===באג 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,<ref name=":0" /> בפעם השנייה בשעה 23:59:42 UTC ב-6 באפריל 2019, והוא יקרה שוב ב-20 בנובמבר 2038.<ref name=":1" /> כדי לטפל בדאגה זו, הודעות ניווט GPS מודרניות משתמשות בשדה של 13 סיביות, שחוזר על עצמו רק כל 8,192 שבועות (57,344 ימים או כ-157 שנה), ולא יחזור לאפס עד לשנת 2137 לערך.

===באג 2040===
מחשבי מקינטוש מוקדמים של אפל מאחסנים זמן בשעונים בזמן אמת (RTC) שלהם ובמערכות הקבצים HFS כמספר שניות של 32 סיביות מאז 00:00:00 ב-1 בינואר 1904. לאחר 06:28:15 ב-6 בפברואר 2040, הזמן יחזור ל-1904.<ref name="inside">Apple Computer, Inc., Inside Macintosh, Volume II, Addison Wesley, 1985, p. 369</ref> HFS+ , פורמט ברירת המחדל של כל מחשבי מקינטוש האחרונים של אפל, מושפע גם הוא. מערכת הקבצים המחליפה של אפל פותרת בעיה זו.

ProDOS למחשבי אפל II תומך במספרי שנה דו ספרתיים בלבד. כדי להימנע מבעיות של באג 2000, אפל פרסמה הערה טכנית לפיה מספר השנה אמור לייצג את 1940–2039.<ref></ref> תוכנה לפלטפורמה עשויה להציג באופן שגוי תאריכים החל משנת 2040. מאמץ של צד שלישי מתבצע כדי לעדכן את תוכנת ProDOS ותוכנות היישום לכדי תמיכה בשנים עד 2924.<ref></ref>

===באג 2042===
ב-18 בספטמבר 2042 שעון היום (TODC) יתהפך במחשבי IBM מיינפריים S/370 וכן בדורותיהם הבאים, כולל הzSeries.<ref name=":2"></ref>

שעוני יום ישנים יותר יושמו כמספר של 64 סיביות של 2<sup>−12</sup> מיקרו שניות (0.244 ננו-שניות), והבסיס הסטנדרטי היה 1 בינואר 1900 UT. ביולי 1999 הוכרז על שעון ה-TODC המורחב, שהאריך את השעון ימינה (כלומר, הביטים המורחבים פחות משמעותיים מהביטים המקוריים). הרזולוציה בפועל תלויה במודל, אך הפורמט עקבי, ולכן יתהפך לאחר 2<sup>52</sup> מיקרו שניות.<ref name=":2" />

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

בעוד ש-IBM הגדירה והטמיעה פורמט חומרה ארוך יותר במכונות האחרונות (128 סיביות), שמאריך את הטיימר בשני הקצוות לפחות ב-8 סיביות נוספות, תוכנות רבות ממשיכות להסתמך על פורמט 64 סיביות שנותר כתת-קבוצה נגישה של הטיימר הארוך יותר.

=== באג 2048 ===
למערכת ATSC תהיה בעיה דומה לנושא ה-DVB שתוארה לעיל לאחר 2048 עקב השימוש שלה בשניות GPS של 32 סיביות שמתחילות מ-6 בינואר 1980.

לוגיקת תכנון הקיבולת במערכת ה-ERP, SAP S/4HANA, תומכת בתאריכי סיום בלבד עד 19 בינואר 2048 (24855 ימים החל מ-1 בינואר 1980). זה נוגע למשל לתכנון הייצור, התחזוקה והפיקוח.<ref></ref>

=== באג 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 שנים ומעלה.<ref></ref><ref></ref>

=== באג 2051 ===
Wii ו-נינטנדו 3DS יתהפכו בסוף 31 בדצמבר 2050, ויחזרו חזרה עד ל-1 בינואר 2000. חלק מהמשחקים בקונסולות שיש להם מערכות לוח שנה משלהם יחזרו לשנה אחרת שנקבעה על פי המשחק; דוגמה לכך הוא המשחק Animal Crossing: New Leaf, שיחזור חזרה ל-1 בינואר 2012.<ref></ref>

=== באג 2061 ===
הנינטנדו סוויץ' לא מאפשרים למשתמשים להכניס תאריכים מעבור ל-2060-12-31. עם זאת, המערכת עדיין מסוגלת לחשב זמן מעבר לתאריך זה.<ref></ref>

===באג 2079===
==== ימים 32,768 ו-65,536 ====
תוכניות המאחסנות תאריכים כמספר הימים מאז תאריך שרירותי הן פגיעות יותר לאפקטים של התהפכות אם הערכים אינם רחבים מספיק כדי לאפשר לערכי התאריך טווח זמן מספיק גדול. ערכים בינאריים של 16 סיביות מתהפכים לאחר 32,768 (2<sup>15</sup>) ימים מיום תחילת הספירה, ומתחילים לייצר ערכים שליליים. חלק ממערכות המיינפריים חוו כשלים בתוכנה כיוון שקודדו תאריכים כמספר הימים מאז 1 בינואר 1900, שהפיקו מספרי שנים שליליים בלתי צפויים ב-18 בספטמבר 1989. באופן דומה, ספירות בינאריות של 16 סיביות של ימים גולשות לאחר 65,536 (2<sup>16</sup>) ימים. עבור תוכנות המשתמשות בתקופה שמתחילה ב-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.<ref name=":0" /><ref name=":1" />

===באג 2150===
תוכנות המחשבות תאריכים של לוח השנה העברי עלולות לא להיות פעילות כאשר שדה השנה, המתחשב בארבע אותיות כציון השנה, יצטרך לחשב תאריך בן חמש אותיות החל מא' בתשרי ה'תתקי"א (21 בספטמבר 2150). עלולים להיתקל בבעיה זו עוד לפני כן בחישוב של תאריכים עתידיים.

=== באג 2262 ===
חלק ממערכות המעקב אחרי הזמן שחלף סופרות ננו-שניות מאז 1970 תוך שימוש במספר שלם בגודל 64 סיביות כולל סיבית סימן, אשר יגלוש ב-11 באפריל 2262, ב-23:47:16. ממשק ה-<code>UnixNano</code> של שפת התכנות Go הוא דוגמה אחת.<ref></ref> דוגמאות אחרות כוללות את אובייקט חותם הזמן ב-Pandas של פייתון,<ref></ref> ה-chrono::system_clock של C++<ref></ref> וטיימרים של QEMU.<ref></ref>

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

=== באגים 4000 ו-8000 ===
בעוד שרוב התוכנות (כולל אקסל, JavaScript ו-R) מזהות בצורה נכונה את 4000 ו-8000 כשנים מעוברות (מכיוון שהן מתחלקות ב-400), SAS לא מזהה את שנים אלה כשנים מעוברות, כתוצאה מ"כלל 4000 שנים" לא רשמי.

לפיכך, המרות תאריכים בין SAS לתוכנות אחרות ייצאו מהסנכרון לאחר 28 בפברואר 4000, אלא אם כן תוכנת SAS מתחשבת בפער הזה.<ref>[http://blogs.sas.com/content/sasdummy/2010/04/05/in-the-year-9999/ In the year 9999....], Chris Hemedinger</ref><ref>[http://support.sas.com/documentation/cdl/en/acpcref/67382/HTML/default/viewer.htm#p0psac3j16cioen1nq2hkwrnk55y.htm The Conversion of Date and Time Values between SAS Data Sets and Microsoft Access Database], SAS 9.4 documentation</ref>

=== באג 4501 ===
Microsoft Outlook משתמש בתאריך 1 בינואר 4501 כשומר מקום ל-"none" או "empty".<ref></ref><ref></ref>

===באג 10000===
באג 10,000 יתרחש כאשר המחשב יצטרך לזהות שנה בעלת חמש ספרות במקום ארבע. לפי הערכות, גם אם תתקיים האנושות עד אז, כל מערכות המחשבים ישתנו ללא היכר עד אז ויכללו פתרון לבעיה זו. עם זאת, בקרב מחקרים (בעיקר בפיזיקה ואסטרונומיה) נדרשים חישובים לתהליכים שאורכים אלפי שנים - למשל, בטיפול בפסולת גרעינית. יישומים אלה נאלצים להתמודד גם עם בעיית שנת ה-0. לכל שנים שהן חזקות עתידיות של 10 יש פוטנציאל לבעיות דומות.

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

ארגון בשם Long Now Foundation פועל לשם הגברת המודעות לבאג ומנסה למצוא פתרונות מבעוד מועד.<ref></ref> " - 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.<ref></ref>

=== באגים 32,768 ו-65,536 ===
תוכנות המעבדות שנים כערכי 16 סיביות עשויות להיתקל בבעיות עם השנים 32,768 או 65,536, תלוי אם מתייחסים לערך כמספר שלם עם סיבית סימן או ללא.

עבור באג 32,768, שנים אחרי 32,767 יכולות להתפרש כמספרים שליליים, החל משנת −32,768.<ref></ref> סביר יותר שבאג 65,536 יתבטא בכך שהוא יציג את השנה 65,536 כשנה 0.<ref></ref>

=== באג 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×10<sup>11</sup> שנים בעתיד) יתרחש כאשר זמן יוניקס 64 סיביות יגלוש ב-UTC 15:30:08 ביום ראשון, 4 בדצמבר 292,277,026,596 לספירה.<ref></ref><ref></ref> בעיה דומה תתרחש עם זמן יוניקס של 128 סיביות המאוחסן כננו-שניות, אשר יגלוש בשנה 5,391,559,471,918,239,498,981 לספירה (2<sup>127</sup>/1000000000, או כ-1.7014118×10<sup>29</sup> שניות לאחר תחילת ספירת היוניקס בשנת 1970).

== גלישת זמן יחסית ==
=== מיקרוסופט ===
ב-Windows 7, Windows Server 2003, Windows Server 2008 ו-Windows Vista, מידע על התחלת חיבור TCP נשמר במאיות שנייה, תוך שימוש במספר שלם בגודל 32 סיביות ללא סיבית סימן, מה שגרם לגלישה ולחיבורי TCP להיכשל לאחר 497 ימים.<ref></ref>

=== בואינג ===
במטוס בואינג 787 היו לפחות שתי בעיות תוכנה הקשורות לאחסון זמן. בשנת 2015 דווח על שגיאה בה הזמן נשמר במאיות שנייה, תוך שימוש במספר שלם בגודל 32 סיביות כולל סיבית סימן, והמערכות קרסו לאחר 248 יום.<ref></ref> בשנת 2020 הוציאה ה-FAA הנחיית כשירות לטיסה לבעיה, שאם המטוס לא יכובה לחלוטין לפני שהגיע לזמן פעילות של 51 ימים רצופים, המערכות שלו תחלנה להציג נתונים מטעים.<ref></ref>

==קישורים חיצוניים==
* 
* 

==הערות שוליים==

*
קטגוריה:באגים
קטגוריה:ייצוג זמן
קטגוריה:עתיד