यूनिक्स टाइमस्टैम्प कनवर्टर
परिवर्तित दिनांक और समय
यूनिक्स टाइमस्टैम्प कनवर्टर
परिचय
यूनिक्स टाइमस्टैम्प (जिसे POSIX समय या एपोक समय भी कहा जाता है) एक समय बिंदु का वर्णन करने के लिए एक प्रणाली है। यह 1 जनवरी 1970 (मध्यरात्रि UTC/GMT) से बीते हुए सेकंडों की संख्या है, जिसमें लीप सेकंड को नहीं गिना जाता है। यूनिक्स टाइमस्टैम्प कंप्यूटर सिस्टम और प्रोग्रामिंग भाषाओं में व्यापक रूप से उपयोग किए जाते हैं क्योंकि ये एक विशिष्ट क्षण का संक्षिप्त, भाषा-स्वतंत्र प्रतिनिधित्व प्रदान करते हैं।
यह कनवर्टर आपको एक यूनिक्स टाइमस्टैम्प को मानव-पठनीय दिनांक और समय प्रारूप में परिवर्तित करने की अनुमति देता है। यह विभिन्न क्षेत्रीय और व्यक्तिगत प्राथमिकताओं को समायोजित करने के लिए 12-घंटे (AM/PM) और 24-घंटे समय प्रारूप दोनों का समर्थन करता है।
यूनिक्स टाइमस्टैम्प कैसे काम करते हैं
यूनिक्स टाइमस्टैम्प को यूनिक्स एपोक (1 जनवरी 1970, 00:00:00 UTC) से बीते सेकंडों की संख्या के रूप में गणना की जाती है। यह उन्हें समय भिन्नताओं की गणना करने और संक्षिप्त प्रारूप में तिथियों को संग्रहीत करने के लिए विशेष रूप से उपयोगी बनाता है।
यूनिक्स टाइमस्टैम्प से कैलेंडर दिनांक में रूपांतरण के लिए कई चरणों की आवश्यकता होती है:
- यूनिक्स एपोक (1 जनवरी 1970, 00:00:00 UTC) से शुरू करें
- टाइमस्टैम्प में सेकंडों की संख्या जोड़ें
- लीप वर्षों, विभिन्न महीने की लंबाई और अन्य कैलेंडर जटिलताओं का ध्यान रखें
- यदि आवश्यक हो तो टाइमज़ोन समायोजन लागू करें
उदाहरण के लिए, यूनिक्स टाइमस्टैम्प 1609459200
शुक्रवार, 1 जनवरी 2021, 00:00:00 UTC का प्रतिनिधित्व करता है।
रूपांतरण सूत्र को इस प्रकार व्यक्त किया जा सकता है:
अधिकांश प्रोग्रामिंग भाषाएँ और ऑपरेटिंग सिस्टम इस रूपांतरण को संभालने के लिए अंतर्निहित फ़ंक्शन प्रदान करते हैं, जटिल कैलेंडर गणनाओं को छिपाते हुए।
समय प्रारूप विकल्प
यह कनवर्टर दो समय प्रारूप विकल्प प्रदान करता है:
-
24-घंटे प्रारूप (जिसे कभी-कभी "सैन्य समय" कहा जाता है): घंटे 0 से 23 के बीच होते हैं, और AM/PM नामकरण नहीं होता है। उदाहरण के लिए, 3:00 PM को 15:00 के रूप में दर्शाया जाता है।
-
12-घंटे प्रारूप: घंटे 1 से 12 के बीच होते हैं, जिसमें मध्यरात्रि से दोपहर तक के समय के लिए AM (ante meridiem) और दोपहर से मध्यरात्रि तक के समय के लिए PM (post meridiem) होता है। उदाहरण के लिए, 24-घंटे प्रारूप में 15:00 को 3:00 PM के रूप में दर्शाया जाता है।
इन प्रारूपों के बीच चयन मुख्यतः क्षेत्रीय परंपरा और व्यक्तिगत पसंद का मामला है:
- 24-घंटे प्रारूप का उपयोग अधिकांश यूरोप, लैटिन अमेरिका और एशिया में, साथ ही वैज्ञानिक, सैन्य और चिकित्सा संदर्भों में विश्व स्तर पर किया जाता है।
- 12-घंटे प्रारूप का उपयोग संयुक्त राज्य अमेरिका, कनाडा, ऑस्ट्रेलिया और कुछ अन्य अंग्रेजी बोलने वाले देशों में दैनिक उपयोग के लिए किया जाता है।
किनारे के मामले और सीमाएँ
यूनिक्स टाइमस्टैम्प के साथ काम करते समय, कई किनारे के मामलों और सीमाओं के बारे में जागरूक होना महत्वपूर्ण है:
-
नकारात्मक टाइमस्टैम्प: ये यूनिक्स एपोक (1 जनवरी 1970) से पहले की तिथियों का प्रतिनिधित्व करते हैं। जबकि गणितीय रूप से मान्य हैं, कुछ सिस्टम नकारात्मक टाइमस्टैम्प को सही तरीके से संभाल नहीं सकते हैं।
-
2038 समस्या: यूनिक्स टाइमस्टैम्प अक्सर 32-बिट साइन किए गए पूर्णांकों के रूप में संग्रहीत किए जाते हैं, जो 19 जनवरी 2038 को ओवरफ्लो हो जाएंगे। इस बिंदु के बाद, 32-बिट सिस्टम समय को सही तरीके से प्रदर्शित करने में असमर्थ होंगे जब तक कि उन्हें बड़े पूर्णांक प्रकार का उपयोग करने के लिए संशोधित नहीं किया जाता।
-
अत्यधिक बड़े टाइमस्टैम्प: बहुत दूर के भविष्य की तिथियाँ कुछ सिस्टम में प्रदर्शित नहीं की जा सकती हैं, या असंगत रूप से संभाली जा सकती हैं।
-
लीप सेकंड: यूनिक्स समय लीप सेकंड का ध्यान नहीं रखता है, जो UTC में पृथ्वी की अनियमित घूर्णन के लिए समय-समय पर जोड़े जाते हैं। इसका अर्थ है कि यूनिक्स समय खगोलीय समय के साथ सटीक रूप से समन्वयित नहीं है।
-
टाइमज़ोन पर विचार: यूनिक्स टाइमस्टैम्प क्षणों का प्रतिनिधित्व UTC में करते हैं। स्थानीय समय में परिवर्तित करने के लिए अतिरिक्त टाइमज़ोन जानकारी की आवश्यकता होती है।
-
डेयलाइट सेविंग टाइम: टाइमस्टैम्प को स्थानीय समय में परिवर्तित करते समय, डेयलाइट सेविंग टाइम परिवर्तनों की जटिलताओं पर विचार करना आवश्यक है।
उपयोग के मामले
यूनिक्स टाइमस्टैम्प का उपयोग कंप्यूटिंग और डेटा प्रबंधन में कई अनुप्रयोगों में किया जाता है:
-
डेटाबेस रिकॉर्ड: टाइमस्टैम्प का उपयोग आमतौर पर यह रिकॉर्ड करने के लिए किया जाता है कि प्रविष्टियाँ कब बनाई गईं या संशोधित की गईं।
-
वेब विकास: HTTP हेडर, कुकीज़ और कैशिंग तंत्र अक्सर यूनिक्स टाइमस्टैम्प का उपयोग करते हैं।
-
लॉग फ़ाइलें: सिस्टम लॉग आमतौर पर घटनाओं को सटीक कालक्रम में रिकॉर्ड करने के लिए यूनिक्स टाइमस्टैम्प के साथ रिकॉर्ड करते हैं।
-
संस्करण नियंत्रण प्रणाली: Git और अन्य VCS टाइमस्टैम्प का उपयोग करते हैं ताकि यह रिकॉर्ड किया जा सके कि कमिट कब किए गए थे।
-
API प्रतिक्रियाएँ: कई वेब APIs अपने उत्तरों में टाइमस्टैम्प शामिल करते हैं ताकि यह संकेत दिया जा सके कि डेटा कब उत्पन्न किया गया था या संसाधनों को कब अंतिम बार संशोधित किया गया था।
-
फाइल सिस्टम: फ़ाइल निर्माण और संशोधन समय अक्सर यूनिक्स टाइमस्टैम्प के रूप में संग्रहीत होते हैं।
-
सत्र प्रबंधन: वेब अनुप्रयोग टाइमस्टैम्प का उपयोग करते हैं ताकि यह निर्धारित किया जा सके कि उपयोगकर्ता सत्र कब समाप्त होना चाहिए।
-
डेटा विश्लेषण: टाइमस्टैम्प विश्लेषण अनुप्रयोगों में अस्थायी डेटा के साथ काम करने के लिए एक मानकीकृत तरीका प्रदान करते हैं।
विकल्प
हालांकि यूनिक्स टाइमस्टैम्प का व्यापक उपयोग होता है, कुछ संदर्भों में अधिक उपयुक्त समय प्रतिनिधित्व प्रारूप हो सकते हैं:
-
ISO 8601: एक मानकीकृत स्ट्रिंग प्रारूप (जैसे, "2021-01-01T00:00:00Z") जो मानव-पठनीय है जबकि क्रमबद्धता बनाए रखता है। यह डेटा इंटरचेंज और उपयोगकर्ता-सम्पर्क अनुप्रयोगों के लिए अक्सर पसंद किया जाता है।
-
RFC 3339: इंटरनेट प्रोटोकॉल में उपयोग के लिए ISO 8601 का एक प्रोफ़ाइल, जिसमें कड़े प्रारूपण आवश्यकताएँ होती हैं।
-
मानव-पठनीय प्रारूप: स्थानीयकृत दिनांक स्ट्रिंग (जैसे, "1 जनवरी 2021") सीधे उपयोगकर्ता इंटरैक्शन के लिए अधिक उपयुक्त होती हैं लेकिन गणना के लिए कम उपयुक्त होती हैं।
-
माइक्रोसॉफ्ट FILETIME: एक 64-बिट मान जो 1 जनवरी 1601 से 100-नैनोसेकंड अंतरालों की संख्या का प्रतिनिधित्व करता है, जिसका उपयोग Windows सिस्टम में किया जाता है।
-
जूलियन डे नंबर: खगोल विज्ञान और कुछ वैज्ञानिक अनुप्रयोगों में उपयोग किया जाता है, जो 4713 BCE से दिनों की गिनती करता है।
समय प्रारूप का चयन कई कारकों पर निर्भर करता है जैसे:
- आवश्यक सटीकता
- मानव पठनीयता की आवश्यकताएँ
- भंडारण की सीमाएँ
- मौजूदा सिस्टम के साथ संगतता
- उन तिथियों की सीमा जो प्रदर्शित करने की आवश्यकता है
इतिहास
यूनिक्स समय की अवधारणा यूनिक्स ऑपरेटिंग सिस्टम के विकास के साथ उत्पन्न हुई, जो बेल लैब्स में 1960 के दशक और 1970 के दशक की शुरुआत में विकसित की गई थी। एपोक के रूप में 1 जनवरी 1970 का उपयोग करना कुछ हद तक मनमाना था लेकिन उस समय के लिए व्यावहारिक था—यह रुचि की तिथियों के लिए भंडारण आवश्यकताओं को कम करने के लिए हाल के समय में था लेकिन ऐतिहासिक डेटा के लिए उपयोगी होने के लिए काफी दूर था।
मूल कार्यान्वयन ने सेकंडों की संख्या को संग्रहीत करने के लिए 32-बिट साइन किए गए पूर्णांक का उपयोग किया, जो उस समय यूनिक्स सिस्टम के अपेक्षित जीवनकाल के लिए पर्याप्त था। हालाँकि, इस निर्णय ने 2038 समस्या (कभी-कभी "Y2K38" या "यूनिक्स सहस्त्राब्दी बग" कहा जाता है) को जन्म दिया, क्योंकि 32-बिट साइन किए गए पूर्णांक केवल 1 जनवरी 2038 (03:14:07 UTC) तक की तिथियों का प्रतिनिधित्व कर सकते हैं।
जैसे-जैसे यूनिक्स और यूनिक्स-जैसे ऑपरेटिंग सिस्टम लोकप्रियता प्राप्त करते गए, यूनिक्स टाइमस्टैम्प कंप्यूटिंग में एक मानक के रूप में स्थापित हो गया। इसे कई प्रोग्रामिंग भाषाओं, डेटाबेस और अनुप्रयोगों द्वारा अपनाया गया, जो इसके मूल यूनिक्स वातावरण से बहुत दूर तक फैला।
आधुनिक सिस्टम increasingly 64-बिट पूर्णांकों का उपयोग करते हैं, जो एपोक से लगभग 292 बिलियन वर्षों के भीतर दोनों दिशाओं में प्रदर्शित करने की सीमा को बढ़ाता है, प्रभावी रूप से 2038 समस्या को हल करता है। हालाँकि, विरासती सिस्टम और अनुप्रयोग अभी भी संवेदनशील हो सकते हैं।
यूनिक्स टाइमस्टैम्प की सरलता और उपयोगिता ने इसके अधिक परिष्कृत समय प्रतिनिधित्व प्रारूपों के विकास के बावजूद इसकी निरंतर प्रासंगिकता को सुनिश्चित किया है। यह कंप्यूटिंग में एक मौलिक अवधारणा बनी हुई है, जो हमारे डिजिटल बुनियादी ढांचे के अधिकांश को आधार प्रदान करती है।
कोड उदाहरण
यहाँ विभिन्न प्रोग्रामिंग भाषाओं में यूनिक्स टाइमस्टैम्प को मानव-पठनीय तिथियों में परिवर्तित करने के उदाहरण दिए गए हैं:
// जावास्क्रिप्ट टाइमस्टैम्प रूपांतरण
function convertUnixTimestamp(timestamp, use12Hour = false) {
// एक नया Date ऑब्जेक्ट बनाएं (जावास्क्रिप्ट मिलीसेकंड का उपयोग करता है)
const date = new Date(timestamp * 1000);
// प्रारूप विकल्प
const options = {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
hour: use12Hour ? 'numeric' : '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: use12Hour
};
// स्थानीय प्रारूपण का उपयोग करके स्ट्रिंग में परिवर्तित करें
return date.toLocaleString(undefined, options);
}
// उदाहरण उपयोग
const timestamp = 1609459200; // 1 जनवरी 2021 00:00:00 UTC
console.log(convertUnixTimestamp(timestamp, false)); // 24-घंटे प्रारूप
console.log(convertUnixTimestamp(timestamp, true)); // 12-घंटे प्रारूप
किनारे के मामलों को संभालना
यूनिक्स टाइमस्टैम्प के साथ काम करते समय, किनारे के मामलों को सही तरीके से संभालना महत्वपूर्ण है। यहाँ कुछ सामान्य किनारे के मामलों को संभालने के उदाहरण दिए गए हैं:
// जावास्क्रिप्ट किनारे के मामले संभालना
function safeConvertTimestamp(timestamp, use12Hour = false) {
// जांचें कि टाइमस्टैम्प मान्य है या नहीं
if (timestamp === undefined || timestamp === null || isNaN(timestamp)) {
return "अमान्य टाइमस्टैम्प";
}
// नकारात्मक टाइमस्टैम्प की जांच करें (1970 से पहले की तिथियाँ)
if (timestamp < 0) {
// कुछ ब्राउज़र नकारात्मक टाइमस्टैम्प को सही तरीके से संभाल नहीं सकते हैं
// 1970 से पहले की तिथियों के लिए अधिक मजबूत दृष्टिकोण का उपयोग करें
const date = new Date(timestamp * 1000);
if (isNaN(date.getTime())) {
return "अमान्य दिनांक (1970 से पहले)";
}
}
// Y2K38 समस्या के लिए जांचें (32-बिट सिस्टम के लिए)
const maxInt32 = 2147483647; // 32-बिट साइन किए गए पूर्णांक के लिए अधिकतम मान
if (timestamp > maxInt32) {
// आधुनिक जावास्क्रिप्ट में बहुत बड़े टाइमस्टैम्प के लिए BigInt का उपयोग करने पर विचार करें
console.warn("टाइमस्टैम्प 32-बिट पूर्णांक सीमा को पार करता है (Y2K38 समस्या)");
}
// सामान्य रूपांतरण के साथ आगे बढ़ें
try {
const date = new Date(timestamp * 1000);
const options = {
year: 'numeric',
month: 'long',
day: 'numeric',
weekday: 'long',
hour: use12Hour ? 'numeric' : '2-digit',
minute: '2-digit',
second: '2-digit',
hour12: use12Hour
};
return date.toLocaleString(undefined, options);
} catch (error) {
return "टाइमस्टैम्प को परिवर्तित करने में त्रुटि: " + error.message;
}
}
संदर्भ
-
"यूनिक्स समय।" विकिपीडिया, विकिमीडिया फाउंडेशन, https://en.wikipedia.org/wiki/Unix_time
-
"2038 समस्या।" विकिपीडिया, विकिमीडिया फाउंडेशन, https://en.wikipedia.org/wiki/Year_2038_problem
-
ओल्सन, आर्थर डेविड। "कैलेंड्रिकल समय की जटिलताएँ।" द ओपन ग्रुप, https://www.usenix.org/legacy/events/usenix01/full_papers/olson/olson.pdf
-
"ISO 8601।" विकिपीडिया, विकिमीडिया फाउंडेशन, https://en.wikipedia.org/wiki/ISO_8601
-
"RFC 3339: इंटरनेट पर दिनांक और समय: टाइमस्टैम्प।" इंटरनेट इंजीनियरिंग टास्क फोर्स (IETF), https://tools.ietf.org/html/rfc3339
-
केर्निगन, ब्रायन W., और डेनिस M. रिची। "C प्रोग्रामिंग लैंग्वेज।" प्रेंटिस हॉल, 1988।