SomeeLab.tools

Unix टाइमस्टैम्प कन्वर्टर

Unix टाइमस्टैम्प को पढ़ने लायक तारीख में और तारीख को टाइमस्टैम्प में बदलें — सेकंड या मिलीसेकंड में, स्थानीय समय या UTC में।

अभी
सेकंडमिलीसेकंड

सेकंड या मिलीसेकंड

Unix टाइमस्टैम्प 1 जनवरी 1970 की आधी रात UTC से बीता समय गिनता है। दिक्कत यह है कि कुछ सिस्टम सेकंड में गिनते हैं और कुछ मिलीसेकंड में।

  • सेकंड — Unix के कमांड, PostgreSQL और MySQL के समय फ़ंक्शन, JWT के exp और iat, ज़्यादातर REST API
  • मिलीसेकंड — JavaScript का Date.now(), Java का System.currentTimeMillis(), कई लॉग पाइपलाइन

इकाई उलट जाए तो नतीजा या तो जनवरी 1970 में गिरता है (मिलीसेकंड को सेकंड पढ़ने पर) या सन 50000 के आसपास पहुँच जाता है (सेकंड को मिलीसेकंड पढ़ने पर)। यह टूल संख्या के आकार से इकाई का अंदाज़ा लगाकर बता देता है कि उसने किस तरह पढ़ा, इसलिए तारीख अटपटी लगे तो पहले वही पंक्ति देखें।

टाइम ज़ोन का जाल

टाइमस्टैम्प का अपना कोई टाइम ज़ोन नहीं होता। वह किसी क्षण को बताने वाली एक संख्या भर है, और ज़ोन तब जुड़ता है जब उस संख्या को इंसान के पढ़ने लायक शब्दों में बदला जाता है। इसीलिए एक ही मान दिल्ली में शाम 4 बजे और लंदन में सुबह 10:30 बजे दिखता है।

इसलिए “दोपहर 3 बजे विफल हुआ” लिखी बग रिपोर्ट में आधी जानकारी गायब होती है। लॉग में टाइमस्टैम्प या ऑफ़सेट वाली ISO 8601 स्ट्रिंग रखें, और पढ़ने लायक समय सिर्फ़ दिखाते वक़्त बनाएँ।

2038 की समस्या

टाइमस्टैम्प को 32-बिट साइन्ड पूर्णांक में रखा जाए तो वह 19 जनवरी 2038 को ओवरफ़्लो हो जाता है। उसी क्षण मान ऋणात्मक होकर तारीख 1901 दिखाने लगता है। आजकल की भाषाएँ और डेटाबेस 64 बिट इस्तेमाल करते हैं, पर अगर आप पुराना एम्बेडेड फ़र्मवेयर या पुराना C कोड सँभाल रहे हैं तो उस फ़ील्ड की चौड़ाई एक बार देख लेना ठीक रहेगा।

ऋणात्मक मान और शून्य

ऋणात्मक मान 1970 से पहले की तारीख बताते हैं। जन्मतिथि जैसी पुरानी तारीखें इसी रूप में रखने पर ये सामने आते हैं, और कुछ लाइब्रेरी इन्हें ठीक से नहीं सँभालतीं।

शून्य का मतलब 1 जनवरी 1970 की आधी रात UTC है। असली डेटा में यह मान दिखे तो वह प्रायः कोई सच्चा समय नहीं, बल्कि कभी सेट न किया गया फ़ील्ड होता है।