डेवलपमेंट · 3 मिनट में पढ़ें ·

Unix टाइमस्टैम्प: सेकंड या मिलीसेकंड?

13 अंकों वाला बग जो हर हफ़्ते प्रोडक्शन में पहुँच जाता है, और दोनों इकाइयों में फ़र्क़ करने का एक बेहद आसान नियम।

JavaScript मिलीसेकंड में बात करता है, ज़्यादातर बैकएंड सेकंड में। दोनों को मिला दें तो तारीख़ें जनवरी 1970 में पहुँच जाती हैं, या हज़ारों साल आगे भविष्य में।

अंक गिनिए

आज का सेकंड वाला टाइमस्टैम्प 10 अंकों का होता है (1790000000 यानी 21 सितंबर 2026)। वही पल मिलीसेकंड में 13 अंकों का, माइक्रोसेकंड में 16 और नैनोसेकंड में 19 अंकों का होता है।

नियम

अगर absolute वैल्यू 10¹² से बड़ी है तो वह मिलीसेकंड है, वरना उसे सेकंड मानिए। यह नियम सितंबर 2001 के बाद के हर मिलीसेकंड टाइमस्टैम्प और साल 33658 से पहले के हर सेकंड टाइमस्टैम्प पर लागू होता है।

const ms = Math.abs(n) > 1e12 ? n : n * 1000;

टाइमस्टैम्प का कोई टाइम ज़ोन नहीं होता

Unix टाइमस्टैम्प 1 जनवरी 1970 को 00:00 UTC से सेकंड गिनता है। एक ही नंबर दुनिया में हर जगह एक ही पल है; बदलता है सिर्फ़ उसे दिखाने का तरीक़ा। बग तब आते हैं जब लोकल टाइम को ऐसे टाइमस्टैम्प में बदला जाता है जैसे वह UTC हो, जिससे हर तारीख़ आपके ऑफ़सेट जितनी खिसक जाती है, अक्सर एक-दो घंटे, और डेलाइट सेविंग बदलने पर फिर से। टाइमस्टैम्प UTC में सेव करें और भेजें, और लोकल टाइम में सिर्फ़ किसी व्यक्ति को दिखाते समय बदलें।

आम भाषाओं में मौजूदा समय पाना

JavaScript  Date.now()                        मिलीसेकंड
JavaScript  Math.floor(Date.now() / 1000)     सेकंड
Python      time.time()                       सेकंड (दशमलव के साथ)
Java        System.currentTimeMillis()        मिलीसेकंड
Go          time.Now().Unix()                 सेकंड
PostgreSQL  EXTRACT(EPOCH FROM now())         सेकंड
MySQL       UNIX_TIMESTAMP()                  सेकंड

1970 से पहले की तारीख़ें और साल 2038

नेगेटिव टाइमस्टैम्प मान्य हैं: −86400 का मतलब 31 दिसंबर 1969 है। कुछ पुराने सिस्टम और स्प्रेडशीट इन्हें नहीं संभाल पाते, इसलिए जन्मतिथि और ऐतिहासिक डेटा बग का आम स्रोत हैं। दूसरी ओर, साइन वाला 32-बिट पूर्णांक 2147483647 पर ख़त्म हो जाता है, जो 19 जनवरी 2038 को 03:14:07 UTC है। जो सिस्टम अब भी टाइमस्टैम्प 32 बिट में रखते हैं, वे पलटकर 1901 पर पहुँच जाएँगे; 64-बिट स्टोरेज इस समस्या को अरबों सालों के लिए टाल देता है।

लीप सेकंड

Unix टाइम लीप सेकंड को नज़रअंदाज़ करता है: हर दिन ठीक 86,400 सेकंड का होता है। इससे गणित आसान रहता है, और लगभग हर एप्लिकेशन के लिए यह फ़र्क़ मायने नहीं रखता। सिर्फ़ उन सिस्टम को ध्यान रखना पड़ता है जिन्हें लीप सेकंड के आर-पार सटीक अंतराल चाहिए, जैसे कुछ वैज्ञानिक या वित्तीय सिस्टम।

डीबगिंग की छोटी चेकलिस्ट

  • तारीख़ जनवरी 1970 में है: सेकंड वाली वैल्यू को मिलीसेकंड समझकर पढ़ा गया।
  • साल पाँच अंकों का है: मिलीसेकंड वाली वैल्यू को सेकंड समझकर पढ़ा गया।
  • सारी तारीख़ें बराबर घंटों से खिसकी हैं: लोकल टाइम को UTC माना गया, या इसका उलटा।
  • साल के कुछ हिस्से में तारीख़ें एक घंटा खिसकी हैं: डेलाइट सेविंग का बदलाव नज़रअंदाज़ हुआ।
  • तारीख़ें 1901 पर कूद जाती हैं: 32-बिट ओवरफ़्लो।

इकाई साफ़-साफ़ चुनिए

4Dev का टाइमस्टैम्प कन्वर्टर अंदाज़ा नहीं लगाता: "Unix Timestamp" का मतलब सेकंड और "Unix Timestamp (ms)" का मतलब मिलीसेकंड है, साथ में माइक्रोसेकंड और नैनोसेकंड वाले फ़ॉर्मैट भी हैं। कुल 33 फ़ॉर्मैट हैं, जिनमें ISO 8601, RFC 2822, SQL DATETIME और Excel की सीरियल तारीख़ें शामिल हैं।

जब लोग तारीख़ पढ़ें तो ISO 8601

टाइमस्टैम्प स्टोरेज और गणना के लिए बढ़िया हैं, लेकिन लोगों के लिए पढ़ना मुश्किल है। लॉग, API और उन फ़ाइलों में जिन्हें लोग खोलते हैं, 2026-09-21T14:30:00Z जैसा ISO 8601 साफ़ है, टेक्स्ट के रूप में सही क्रम में लगता है और टाइम ज़ोन साफ़-साफ़ बताता है। दोनों के बीच बदलना ठीक वही काम है जिसके लिए टाइमस्टैम्प कन्वर्टर बना है।

टाइमस्टैम्प कन्वर्टर खोलें

LinkedInXFacebook