C# में Unix Timestamp को समझना: टाइमस्टैम्प से DateTime और वापस

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: Unix Timestamp सिर्फ एक संख्या क्यों नहीं है

\n

API, डेटाबेस या लॉग के साथ काम करने वाला हर डेवलपर, देर-सबेर Unix timestamp से जरूर टकराता है। यह एक पूर्णांक (या फ्लोटिंग-पॉइंट संख्या) है जो 1 जनवरी 1970, 00:00:00 UTC से गुज़रे सेकंडों की संख्या को दर्शाता है - जिसे Unix epoch कहा जाता है।

\n

लेकिन जब आप सर्वर के रिस्पॉन्स में संख्या 1719878400 देखते हैं, तो आपका दिमाग तुरंत यह नहीं कह सकता: "अच्छा, यह 2 जुलाई 2024 है।" हमें इसे परिचित DateTime में बदलने की जरूरत है। और इसके विपरीत - ट्रांसमिशन के लिए तारीख को टाइमस्टैम्प के रूप में सहेजना होता है।

\n

Stack Overflow पर प्रश्न "How can I convert a Unix timestamp to DateTime and vice versa?" को लाखों बार देखा गया है। इसका मतलब है कि अनुभवी C# डेवलपर भी कभी-कभी बारीकियों में उलझ जाते हैं। इस लेख में हम सिर्फ तैयार रेसिपी नहीं देंगे, बल्कि अंदर की बात भी समझेंगे: DateTime, DateTimeOffset, टिक्स और समय क्षेत्र कैसे काम करते हैं।

\n\n

वास्तव में Unix Timestamp क्या है?

\n

कोड लिखने से पहले, आइए शब्दों पर सहमत हों। Unix timestamp 1 जनवरी 1970, मध्यरात्रि UTC से सेकंडों (कभी-कभी मिलीसेकंडों) की संख्या है। महत्वपूर्ण: यह समय का एक निरपेक्ष क्षण है, जो समय क्षेत्र पर निर्भर नहीं करता। यही कारण है कि वितरित सिस्टम में इसका उपयोग करना इतना सुविधाजनक है।

\n

C# में हम दो मुख्य प्रकारों के साथ काम करते हैं:

\n
    \n
  • DateTime - क्लासिक प्रकार, जो UTC या स्थानीय समय (प्रॉपर्टी Kind) दोनों में हो सकता है।
  • \n
  • DateTimeOffset - अधिक आधुनिक प्रकार, जो UTC से ऑफसेट को स्पष्ट रूप से संग्रहीत करता है। नई परियोजनाओं के लिए अनुशंसित।
  • \n
\n

अंदर की बात: DateTime 1 जनवरी 0001 से टिक्स (100-नैनोसेकंड अंतराल) की संख्या संग्रहीत करता है। जबकि Unix timestamp 1970 से सेकंडों की संख्या है। एक से दूसरे में जाने के लिए, हमें इन दो युगों के बीच के अंतर की गणना करनी होगी।

\n\n

Unix Timestamp को DateTime में बदलना (और वापस) - बुनियादी विधियाँ

\n

.NET Framework 4.6 और .NET Core से शुरू करके, C# में बिल्ट-इन विधियाँ आ गई हैं जो जीवन को आसान बनाती हैं। आइए उन पर नज़र डालें।

\n\n

1. Unix timestamp (सेकंड) से DateTime में

\n

सबसे आसान तरीका DateTimeOffset.FromUnixTimeSeconds() का उपयोग करना है। यह DateTimeOffset लौटाता है, जिसे बाद में DateTime में बदला जा सकता है।

\n
long unixTimestamp = 1719878400; // 2 जुलाई 2024, 00:00:00 UTC\n\n// DateTimeOffset प्राप्त करें\nDateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeSeconds(unixTimestamp);\n\n// DateTime (UTC) में बदलें\nDateTime utcDateTime = dateTimeOffset.UtcDateTime;\n\nConsole.WriteLine(utcDateTime); // 02.07.2024 0:00:00
\n

यदि आपको स्थानीय समय चाहिए (उदाहरण के लिए, उपयोगकर्ता को दिखाने के लिए), तो dateTimeOffset.LocalDateTime का उपयोग करें। लेकिन सावधान रहें: स्थानीय समय सर्वर या कंप्यूटर की सेटिंग्स पर निर्भर करता है।

\n\n

2. DateTime से Unix timestamp में

\n

उल्टा रूपांतरण - DateTimeOffset पर ToUnixTimeSeconds() विधि के माध्यम से।

\n
DateTime utcDateTime = new DateTime(2024, 7, 2, 0, 0, 0, DateTimeKind.Utc);\n\n// स्पष्ट UTC निर्देश के साथ DateTimeOffset बनाएँ\nDateTimeOffset dateTimeOffset = new DateTimeOffset(utcDateTime);\n\nlong unixTimestamp = dateTimeOffset.ToUnixTimeSeconds();\n\nConsole.WriteLine(unixTimestamp); // 1719878400
\n

यह अत्यंत महत्वपूर्ण है: हमेशा DateTimeKind.Utc निर्दिष्ट करें जब आप DateTime बना रहे हों जिसे आप कन्वर्ट करने वाले हैं। यदि ऐसा नहीं किया गया, तो DateTimeOffset मान लेगा कि समय स्थानीय है, और आपको गलत timestamp मिलेगा - आपके समय क्षेत्र के अंतर के साथ।

\n\n

3. मिलीसेकंड के साथ काम करना

\n

कभी-कभी timestamp मिलीसेकंड में भेजा जाता है (उदाहरण के लिए, JavaScript से)। इसके लिए ए

ब्लॉग

पुस्तक अनुशंसाएँ