Leap year problem
लीप ईयर समस्या (जिसे लीप ईयर बग या लीप डे बग के रूप में भी जाना जाता है) डिजिटल (कंप्यूटर से संबंधित) और गैर-डिजिटल प्रलेखन और डेटा भंडारण स्थितियों दोनों के लिए एक समस्या है जो लीप वर्ष की गणना में त्रुटियों के परिणामस्वरूप होती है, या लीप वर्ष और सामान्य वर्षों के बीच के अंतर को ध्यान में रखे बिना तिथियों में हेरफेर करने से होती है। श्रेणियाँ लीप ईयर बग आमतौर पर दो श्रेणियों में आते हैं, जो वास्तविक दुनिया के उपयोग में उनके प्रभाव की मात्रा के आधार पर होते हैंः वे जो त्रुटि स्थितियों की ओर ले जाते हैं, जैसे कि अपवाद, त्रुटि वापसी कोड, शुरुआत न किए गए चर, या अंतहीन लूप वे जो गलत डेटा की ओर ले जाते हैं, जैसे कि रेंज क्वेरी या एकत्रीकरण में ऑफ-बाय-वन समस्याएं उदाहरण पायथन निम्नलिखित पायथन कोड श्रेणी 1 लीप ईयर बग का एक उदाहरण है। यह आज 29 फरवरी तक ठीक से काम करेगा। फिर, यह एक सामान्य वर्ष का 29 फरवरी बनाने का प्रयास करेगा, जो मौजूद नहीं है। तिथि निर्माता "दिन महीने के लिए सीमा से बाहर है" संदेश के साथ एक मूल्य त्रुटि उठाएगा। आज की डेटटाइम आयात तिथि से = date.today () बाद में = today.replace (वर्ष = today.year + 1) विंडोज सी + + निम्नलिखित विंडोज सी + + कोड श्रेणी 1 लीप ईयर बग का एक उदाहरण है। यह ठीक से तब तक काम करेगा जब तक कि वर्तमान तिथि लीप वर्ष की 29 फरवरी नहीं हो जाती। फिर, यह एक सामान्य वर्ष के 29 फरवरी का प्रतिनिधित्व करने के लिए सेंट को संशोधित करेगा, एक तारीख जो वास्तव में मौजूद नहीं है। एस. टी. एम. टी. आई. एम. संरचना को एक पैरामीटर के रूप में स्वीकार करने वाले किसी भी कार्य में एस. टी. पास करना संभवतः विफल हो जाएगा। उदाहरण के लिए, यहाँ दिखाया गया सिस्टमटाइम टू फाइलटाइम कॉल एक त्रुटि कोड वापस करेगा। चूँकि उस वापसी मूल्य की जाँच नहीं की जाती है (जो बेहद आम है), इसके परिणामस्वरूप एफ. टी. को बिना शुरुआत के छोड़ दिया जाएगा। सिस्टम एसटी; फाइलटाइम फीट; गेटसिस्टमटाइम (& एसटी); st.wYear + +; सिस्टमटाइम टू फाइलटाइम (& एसटी, & फीट); माइक्रोसॉफ्ट सी #निम्नलिखित. नेट सी #कोड श्रेणी 1 लीप ईयर बग का एक उदाहरण है। यह 29 फरवरी तक ठीक से काम करेगा। फिर, यह एक सामान्य वर्ष का 29 फरवरी बनाने का प्रयास करेगा, जो मौजूद नहीं है। डेटटाइम कंस्ट्रक्टर एक ArgumentOutOfRangeExसेपशन देगा। डेटटाइम dt = DateTime.Now; डेटटाइम परिणाम = नया डेटटाइम (dt.Year + 1, dt.Month, dt.Day); जावास्क्रिप्ट निम्नलिखित जावास्क्रिप्ट कोड श्रेणी 2 लीप ईयर बग का एक उदाहरण है। यह 29 फरवरी तक ठीक से काम करेगा, जैसे कि 2020-02-29 पर। फिर यह वर्ष को 2021 तक निर्धारित करने का प्रयास करेगा। चूँकि 2021-02-29 मौजूद नहीं है, तिथि ऑब्जेक्ट अगली वैध तिथि के लिए आगे बढ़ेगा, जो कि 2021-03-01 है. वार dt = नई तिथि (); dt.setFullYear (dt.getFullYear () + 1); खराब लीप वर्ष एल्गोरिथ्म (कई भाषाएँ) निम्नलिखित कोड एक लीप वर्ष बग का एक उदाहरण है जो कई भाषाओं में देखा जाता है। यह या तो श्रेणी 1 या श्रेणी 2 का प्रभाव पैदा कर सकता है, जो इस बात पर निर्भर करता है कि परिणाम किस लिए उपयोग किया जाता है। यह गलत तरीके से माना जाता है कि एक अधिवर्ष ठीक हर चार साल में होता है। बूल लीप ईयर = वर्ष% 4 = = 0 है; लीप ईयर एल्गोरिदम में सही लीप ईयर एल्गोरिदम समझाया गया है। माइक्रोसॉफ्ट एक्सेल ने अपने शुरुआती संस्करणों के बाद से, गलत तरीके से 1900 को एक अधिवर्ष माना है, और इसलिए 29 फरवरी उस वर्ष के 28 फरवरी और 1 मार्च के बीच आता है। बग की उत्पत्ति लोटस 1-2-3 से हुई थी, और इसे पीछे की संगतता के उद्देश्य से एक्सेल में जानबूझकर लागू किया गया था। माइक्रोसॉफ्ट ने इस बग के बारे में एक लेख लिखा है, जिसमें 1900 को लीप वर्ष मानने के कारणों की व्याख्या की गई है। इस बग को एक्मा ऑफिस ओपन एक्स. एम. एल. (ओ. ओ. एक्स. एम. एल.) विनिर्देश में एक आवश्यकता के रूप में प्रचारित किया गया है। 1996 में, 31 दिसंबर को, तिवाई पॉइंट, न्यूजीलैंड और बेल बे, तस्मानिया, ऑस्ट्रेलिया में दो एल्यूमीनियम गलाने वाले संयंत्रों में, गलाने वाले पॉटलाइन को नियंत्रित करने वाले 660 कंप्यूटरों में से प्रत्येक को आधी रात को बंद कर दिया गया क्योंकि कंप्यूटर को वर्ष के 366वें दिन को संभालने के लिए प्रोग्राम नहीं किया गया था। मरम्मत की लागत अनुमान से अधिक थी। 2000 में, 31 दिसंबर को नॉर्वे में राष्ट्रीय रेल कंपनी वाय ने पाया कि उसकी सभी 29 नई सिगनेटर ट्रेनें चलने में विफल रहीं क्योंकि उनके ऑनबोर्ड कंप्यूटर वर्ष के 366वें दिन के रूप में तारीख को नहीं पहचानते थे। एक अंतरिम उपाय के रूप में, इंजीनियरों ने अपनी घड़ियों को एक महीने के लिए रीसेट करके ट्रेनों को फिर से शुरू किया। 31 दिसंबर, 2008 की आधी रात को कई पहली पीढ़ी के ज़ून 30 मॉडल जम गए। माइक्रोसॉफ्ट ने कहा कि समस्या फ्रीस्केल द्वारा लिखे गए आंतरिक घड़ी चालक और उपकरण द्वारा लीप वर्ष को संभालने के तरीके के कारण हुई थी। यह स्वचालित रूप से 24 घंटे बाद खुद को ठीक कर लेता है, लेकिन जो लोग इंतजार नहीं करना चाहते थे, उनके लिए एक मध्यवर्ती "सुधार" उपकरण की बैटरी को निकालना और फिर 1 जनवरी, 2009 को दोपहर यूटीसी के बाद रिचार्ज करना था। सोनी के प्लेस्टेशन 3 ने 2010 को एक लीप वर्ष के रूप में गलत तरीके से माना, इसलिए 29 फरवरी, 2010 को 1 मार्च, 2010 को दिखाया गया और एक प्रोग्राम त्रुटि का कारण बना। 2012 में, टॉमटॉम उपग्रह नेविगेशन उपकरण एक लीप ईयर बग के कारण खराब हो गए जो पहली बार 31 मार्च को सामने आया था। 2012 में, जीमेल के चैट इतिहास ने 29 फरवरी को सहेजे गए सभी चैट के लिए 31 दिसंबर, 1969 की तारीख दिखाई। 2012 में, माइक्रोसॉफ्ट एज़्योर को 28 फरवरी को लीप ईयर बग द्वारा ऑफ़लाइन ले लिया गया था। शाम 5.45 बजे पी. एस. टी. पर विंडोज एज़्योर टीम को एक समस्या के बारे में पता चला, जाहिरा तौर पर एक समय गणना के कारण जो लीप वर्ष के लिए गलत थी। 2016 में, वेबसाइट कोड ऑफ मैट पर 2016 लीप डे बग्स की सूची में बड़ी संख्या में लीप ईयर बग्स को सूचीबद्ध किया गया था। 2016 में, 29 फरवरी को डसेलडोर्फ हवाई अड्डे पर सामान कन्वेयर प्रणाली में एक लीप ईयर बग के कारण सामान के 1,200 से अधिक टुकड़े अपनी उड़ानों से चूक गए। 2020 में वेबसाइट कोड ऑफ मैट पर 2020 लीप डे बग्स की सूची में बड़ी संख्या में लीप ईयर बग्स को सूचीबद्ध किया गया था। समय प्रारूपण और भंडारण बग्स वर्ष 2100 समस्या संदर्भ समय प्रारूपण और भंडारण बग्स कैलेंडर सॉफ्टवेयर बग्स प्रौद्योगिकी खतरे भी देखें।