हिन्दी

डेवलपर टूल · Unix टाइमस्टैम्प कन्वर्टर

नकारात्मक Unix टाइमस्टैम्प: 1970 से पहले की तारीखों को कैसे दर्शाया जाता है

· यह काम किस प्रकार करता है

टाइम स्टाम्प्स Unix-समय डेटा-प्रारूप

एक समयरेखा 1970 युग से बाईं ओर नकारात्मक मानों तक फैली हुई है
मूल ToolAcre वेक्टर चित्रण

Unix समय 1970 से आगे की ओर गिना जाता है, लेकिन यह पीछे की ओर भी गिना जाता है। यह पोस्ट बताती है कि एक नकारात्मक युग का क्या मतलब है, कैसे −1 1969 का अंतिम सेकंड बन जाता है, और जहां सकारात्मक मान मानने वाली प्रणालियाँ टूट जाती हैं।

ऋण चिह्न के साथ जन्मतिथि - 1965 में जन्मे उपयोगकर्ता को ऋणात्मक पूर्णांक के रूप में संग्रहीत किया जाता है, और कोड जो इसे एक त्रुटि के रूप में मानता है

1970 से पहले जन्मे व्यक्ति के रिकॉर्ड में वैध रूप से नकारात्मक Unix टाइमस्टैम्प शामिल हो सकता है। प्रत्येक अग्रणी ऋण चिह्न को अस्वीकार करने से प्रतिनिधित्व विकल्प डेटा-हानि बग में परिवर्तित हो जाता है। ToolAcre का पार्सर एक वैकल्पिक चिह्न स्वीकार करता है, और `fromEpoch` शून्य से नीचे व्याख्या किए गए मिलीसेकंड मान को अमान्य मानने के बजाय `beforeEpoch` के रूप में चिह्नित करता है।

फिर डिस्प्ले एक नोट जोड़ता है जिसमें बताया गया है कि यह क्षण Unix युग से पहले का है। यह किसी तिथि को चुपचाप प्रस्तुत करने से अधिक मजबूत है क्योंकि यह समीक्षक को असामान्य संकेत दिखाई देता रहता है। यदि कोई अपस्ट्रीम स्कीम नकारात्मक को रोकता है, तो विफलता उस स्कीमा या माइग्रेशन से संबंधित है, न कि उस अंकगणित से जो मानचित्र शून्य के दोनों किनारों पर गिना जाता है।

हस्ताक्षरित पूर्णांक और युग - time_t पर हस्ताक्षर क्यों किया गया है, और −1 और −86400 किसके अनुरूप हैं

शून्य 1970-01-01T00:00:00.000Z है. रिपॉजिटरी परीक्षण साबित करते हैं कि −1 सेकंड, ठीक पूर्ववर्ती क्षण, `1969-12-31T23:59:59.000Z` है। इसी तरह, −86,400 सेकंड शून्य से एक निश्चित POSIX दिन पहले होता है। हस्ताक्षरित अंकगणित पुराने रिकॉर्ड के लिए दूसरे युग की आवश्यकता के बजाय अक्ष को निरंतर बनाता है।

रूपरेखा में हस्ताक्षरित भंडारण का श्रेय `time_t` को दिया गया है, लेकिन यह कोड प्रत्येक प्लेटफ़ॉर्म द्वारा उपयोग किए जाने वाले डिज़ाइन इतिहास या प्रकार को स्थापित नहीं करता है। इसका संक्षिप्त प्रमाण पर्याप्त है: JavaScript संख्याएँ नकारात्मक हो सकती हैं, पहचान पूर्ण परिमाण का उपयोग करती है, और दिनांक परिणाम को प्रारूपित कर सकता है। कन्वर्टर के स्वीकृत इनपुट से उत्पादक फ़ील्ड के घोषित प्रकार का अलग से वर्णन करें।

शून्य के आसपास युग अंकगणित पर हस्ताक्षर किए, बिना यह दावा किए कि हर बार ने अपना प्रकार क्यों चुना

नकारात्मक मान सकारात्मक मानों के समान इकाई भेद बनाए रखते हैं। `−1000` सेकंड युग से 1,000 सेकंड पहले का बिंदु है, जबकि `−1000` मिलीसेकंड इसके केवल एक सेकंड पहले का बिंदु है। स्वचालित पहचान दोनों को सेकंड के रूप में मानती है क्योंकि उनका परिमाण 10¹¹ से कम है, इसलिए युग-पूर्व की छोटी मिलीसेकंड गणना के लिए स्पष्ट मिलीसेकंड चयन की आवश्यकता होती है।

यह अंक-गणना लोककथाओं की एक ठोस विफलता है। एक डेवलपर ऋण चिह्न और चार अंक देखकर इकाई का अनुमान नहीं लगा सकता है। स्रोत अनुबंध का उपयोग करें, चयनकर्ता चुनें और यूनिट नोट का निरीक्षण करें। ToolAcre का परिमाण नियम विशिष्ट डेटा के लिए एक डिफ़ॉल्ट है, न कि 1970 के करीब ऐतिहासिक मूल्यों पर मेटाडेटा के लिए प्रतिस्थापन।

जहां नकारात्मक मान विफल हो जाते हैं - सिस्टम जो −1 को एक प्रहरी के रूप में उपयोग करते हैं, अहस्ताक्षरित भंडारण, दिनांक पिकर जो क्लैंप करते हैं, और भाषाएं जो उन्हें अस्वीकार करती हैं

कन्वर्टर के बाहर, `−1` को कभी-कभी एक लापता-मूल्य प्रहरी के रूप में आरक्षित किया जाता है, और एक अहस्ताक्षरित कॉलम किसी भी नकारात्मक क्षण को संरक्षित नहीं कर सकता है। वे सामान्य डिज़ाइन संभावनाएँ हैं, लेकिन रिपॉजिटरी यह प्रमाणित नहीं कर सकती कि कोई विशेष डेटाबेस, दिनांक पिकर या भाषा कैसे व्यवहार करती है। अभिलेखीय तिथियों को आगे बढ़ाने से पहले वास्तविक सीमा का परीक्षण करें।

एक उपयोगी जांच में तीन मान होते हैं: शून्य या प्रलेखित लापता मार्कर, −1, और स्पष्ट रूप से पुरानी तारीख। यदि −1 पुराना मान जीवित रहने पर गायब हो जाता है, तो प्रहरी प्रबंधन शामिल होता है; यदि सभी नकारात्मक विफल हो जाते हैं, तो प्रकार और सत्यापन का निरीक्षण करें। 1970 वर्ष जोड़कर या पूर्ण मान लेकर लक्षण को "ठीक" न करें, क्योंकि दोनों अलग-अलग क्षण बनाते हैं।

व्यावहारिक उदाहरण: −14182940 - अंकगणित को UTC में और ग्रीनविच के पश्चिम में एक स्थानीय क्षेत्र में जुलाई 1969 तारीख में परिवर्तित करना

−14,182,940 सेकंड के लिए, युग से शुरू करें और 164 पीछे की ओर बढ़ते हुए 86,400-सेकंड दिन पूरे करें, 13,340 सेकंड छोड़कर। शेष 3 घंटे, 42 मिनट और 20 सेकंड है। परिणामी UTC रीडिंग `1969-07-20T20:17:40.000Z` है, जो विशेष रूप से इस आलेख के लिए यहां चुना गया एक क्षण है।

UTC के पश्चिम में एक स्थानीय रीडिंग पहले का वॉल-क्लॉक घंटा या कोई अन्य तारीख भी दिखा सकती है, लेकिन इसका सटीक परिणाम ब्राउज़र ज़ोन और अंतर्राष्ट्रीय नियमों पर निर्भर करता है। किसी सार्वभौमिक उत्तर को प्रकाशित करने के बजाय इसे पैनल से पढ़ें। निश्चित सत्यापन ISO पंक्ति है; स्थानीय पंक्ति उसी नकारात्मक गणना पर एक पर्यावरणीय टिप्पणी है।

व्यावहारिक उदाहरण: −14,182,940 को सत्यापन योग्य UTC अंकगणित के साथ परिवर्तित करना

ToolAcre स्रोत में बताई गई दिनांक सीमा, ±8.64×10¹⁵ मिलीसेकेंड के विरुद्ध अपने व्याख्या किए गए मान की जांच करता है। यह −2,208,988,800 सेकंड का `1900-01-01T00:00:00.000Z` में रूपांतरण भी सिद्ध करता है। उन तथ्यों से पता चलता है कि मार्ग 1970 से काफी पहले पहुंचता है, बिना यह बताए कि प्रत्येक भंडारण प्रणाली समान सीमा ले सकती है।

एक हस्ताक्षरित 32-बिट फ़ील्ड में JavaScript दिनांक की तुलना में एक संकीर्ण गणितीय अंतराल होता है, लेकिन जब आप कोई संख्या चिपकाते हैं तो कन्वर्टर फ़ील्ड चौड़ाई का निरीक्षण नहीं करता है। ऑडिट में स्रोत प्रकार को सुरक्षित रखें। एक सफल ब्राउज़र रूपांतरण यहां प्रतिनिधित्व क्षमता को प्रदर्शित करता है, न कि फर्मवेयर, SQL कॉलम या बाइनरी प्रोटोकॉल के माध्यम से कहीं और सुरक्षित राउंड-ट्रिपिंग।

कन्वर्टर की दिनांक सीमा ज्ञात है; बाहरी 32-बिट सीमाएँ उनके भंडारण प्रकार पर निर्भर करती हैं

किसी गिनती को JavaScript तारीख में बदलने से वास्तव में सदियों पहले हर स्थान पर छपे नागरिक कैलेंडर का पुनर्निर्माण नहीं होता है। कार्यान्वयन प्लेटफ़ॉर्म के दिनांक मॉडल का उपयोग करता है और ISO प्रतिनिधित्व लौटाता है; इसमें कैलेंडर सुधारों के लिए कोई ऐतिहासिक-कैलेंडर चयनकर्ता, स्थानीय संग्रह या दस्तावेजी स्रोत शामिल नहीं है। वे दावे जानबूझकर अनुपस्थित हैं।

आधुनिक सॉफ़्टवेयर रिकॉर्ड के लिए, प्रोलेप्टिक मशीन प्रतिनिधित्व अभी भी बिल्कुल वही अनुबंध हो सकता है जिसकी आपको आवश्यकता है। वंशावली, कानूनी इतिहास या अभिलेखीय प्रतिलेखन के लिए, किसी भी व्युत्पन्न युग के साथ मूल लिखित तिथि और उसके कैलेंडर संदर्भ को संरक्षित करें। एक सुविधाजनक क्रमबद्ध संख्या को उस अनिश्चितता को नहीं मिटाना चाहिए जिसे रूपांतरण हल नहीं कर सकता।

कैलेंडर-इतिहास के दावे इस कन्वर्टर के साक्ष्य से बाहर हैं

नकारात्मक युग अक्ष पर एक दिशा है, त्रुटि कैटेगरी नहीं। ToolAcre इसे पार्स करता है, परिमाण के अनुसार समान सेकंड-या-मिलीसेकंड नियम लागू करता है, और परिणाम को युग से पहले चिह्नित करता है। यह व्यवहार एक समीक्षक को एक वैध पुराने इंस्टेंट को अन्यत्र प्रहरी या अहस्ताक्षरित-भंडारण विफलता से अलग करने देता है।

प्री-1970 डेटा का ऑडिट करते समय, संकेत की व्याख्या करने से पहले इकाई, स्रोत प्रकार और लुप्त-मूल्य परंपरा बताएं। फिर ISO परिणाम की तुलना किसी ज्ञात रिकॉर्ड से करें। केवल संकेत ही सार्थक अंकगणित है; आसपास की स्कीमा यह निर्धारित करती है कि क्या निर्माता का इरादा उस अंकगणित का था या नियंत्रण मूल्य के रूप में उसी संख्या का उपयोग करना था।