4 पॉइंट द्वारा GN⁺ 2023-11-12 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Unix timestamp का 1.7 अरब की रेंज में प्रवेश करना यह दिखाता है कि 1 जनवरी 1970 UTC के बाद से इतने सेकंड जमा हो चुके हैं; उदाहरण मान 1782553539 के रूप में दिखाया गया है
  • conversion tool timestamp को GMT, user timezone और relative time में बदलता है और seconds, milliseconds, microseconds, nanoseconds units को support करता है
  • यह उसी समय को ISO 8601 और कई RFC formats में भी साथ दिखाता है, जिससे systems के बीच date representation के फर्क को समझना आसान होता है
  • Unix timestamp स्थान से स्वतंत्र होकर एक ही समय-बिंदु को दर्शाता है, इसलिए distributed applications में date information की tracking और sorting के लिए उपयोगी है
  • 19 जनवरी 2038 को 32-bit overflow समस्या बनेगा, इसलिए applications को नया timestamp convention अपनाना होगा या 64-bit systems पर migrate करना होगा

Unix timestamp का आधार और conversion का तरीका

  • Unix timestamp समय को सेकंड में संचित मान के रूप में संभालने का तरीका है
    • इसका reference point 1 जनवरी 1970 UTC का Unix Epoch है
    • किसी खास तारीख और Unix Epoch के बीच बीते सेकंड की संख्या ही timestamp value बनती है
    • यह मान उपयोगकर्ता पृथ्वी पर कहीं भी हो, उसी समय-बिंदु को दर्शाता है
  • पेज का conversion tool timestamp input और date/time input, दोनों को support करता है
    • timestamp को seconds, milliseconds, microseconds, nanoseconds units में input किया जा सकता है
    • date/time में year, month, day, 24-hour format hour, minute, second भरकर उसे Unix timestamp में convert किया जा सकता है
    • result को GMT, user timezone और relative time format में देखा जा सकता है

साथ में दिखाए जाने वाले standard time formats

  • मौजूदा epoch example कई standard time formats में भी दिया गया है

समय इकाई रूपांतरण और 2038 की समस्या

  • पेज इंसानों के पढ़ने योग्य time units को Unix timestamp के सेकंड में बदलकर दिखाता है
    • 1 घंटा: 3600 सेकंड
    • 1 दिन: 86400 सेकंड
    • 1 सप्ताह: 604800 सेकंड
    • 1 महीना, 30.44 दिन के आधार पर: 2629743 सेकंड
    • 1 वर्ष, 365.24 दिन के आधार पर: 31556926 सेकंड
  • 19 जनवरी 2038 को 32-bit overflow की वजह से Unix timestamp काम करना बंद कर देगा
    • उससे पहले लाखों applications को नया timestamp convention अपनाना होगा
    • या 64-bit systems पर migrate होकर timestamp के उपयोग की अवधि और बढ़ानी होगी

1 टिप्पणियां

 
GN⁺ 2023-11-12
Hacker News की राय
  • 10 करोड़ सेकंड बहुत जल्दी निकल जाते हैं
    संदर्भ के लिए, Unix timestamp 1600000034 के समय New York Times का फ्रंट पेज यह था:
    https://web.archive.org/web/20200913122714/https://www.nytim...
    और 1500000301, 1400000634, 1300007806 के समय क्रमशः ये थे:
    https://web.archive.org/web/20170714024501/http://www.nytime...
    https://web.archive.org/web/20140513170354/http://www.nytime...
    https://web.archive.org/web/20110313091646/http://www.nytime...

    • यह 3.17 साल है
  • Unix timestamp 1 600 000 000 भी बहुत पुरानी बात नहीं थी; वह 2020-09-13 12:26:40 UTC था
    उस समय की HN चर्चा यहां है: https://news.ycombinator.com/item?id=24452885
    उस event की याद में लिखा मेरा blog post यहां है: https://susam.net/maze/unix-timestamp-1600000000.html
    100 000 000 सेकंड लगभग 3 साल 2 महीने होते हैं, इसलिए ऐसे events हर कुछ साल में एक बार दिख जाते हैं
    मेरे हिसाब से सबसे शानदार event अभी साढ़े 9 साल दूर Unix timestamp 2 000 000 000 होगा: 2033-05-18 03:33:20 UTC. ऐसी चीज़ लगभग 33 साल 8 महीने में सिर्फ एक बार होती है
    Python में 1700000000 ऐसे दिखता है:
    $ python3 -q

    from datetime import datetime
    datetime.utcfromtimestamp(1_700_000_000)
    datetime.datetime(2023, 11, 14, 22, 13, 20)

    GNU date(Linux):
    $ date -ud @1700000000
    Tue Nov 14 22:13:20 UTC 2023
    BSD date(macOS, FreeBSD, OpenBSD आदि):
    $ date -ur 1700000000
    Tue 14 Nov 2023 22:13:20 UTC

    • 33 साल! 90s के आखिर में मैं MUD खेलते हुए समय बिताता था, और पता नहीं क्यों, कई save files में file name के तौर पर epoch timestamp इस्तेमाल होता था
      codebase का कुछ हिस्सा संभालने लगा तो उन files से काफी काम पड़ा; वे सभी 800–900 मिलियन रेंज के नंबर थे
      एक समय ऐसा आया कि उस range के नंबर देखते ही मुझे कुछ हफ्तों की गलती के भीतर तुरंत अंदाज़ा हो जाता था कि लगभग कौन-सा साल और महीना है
      अजीब माहौल अजीब superpowers पैदा कर देता है
      [0] https://en.wikipedia.org/wiki/Multi-user_dungeon
    • इससे भी शानदार event तब होगा जब जनवरी 2038 में यह साफ-सुथरे नंबर 2,147,483,648 तक पहुंचेगा
    • मेरे हिसाब से 2222222222 ज्यादा खास है: Sat Jun 02 2040 03:57:02 GMT+0000
      किस्मत अच्छी रही तो शायद 3333333333 भी खुद देख सकूं। वह जबरदस्त दिन होगा
  • perfect shirt पर नज़र रखने के लिए https://datetime.store/ खोलने का यह बिल्कुल सही समय है

    • वह website मंगलवार को ठीक से धड़ाम हो जाएगी शायद…
      “बॉस! हम पर DDoS हो रहा है!”
      “नहीं, बेटा, बस मंगलवार है”
    • आप statistically यह calculate करने वाली death clock जैसी चीज़ इस्तेमाल कर सकते हैं कि आप कब मरेंगे
      सोच रहा हूं कि क्या उस समय को print करने वाली shirt भी मिल सकती है
    • मुझे अपना पुराना 1BTC coffee mug वाला idea याद आ गया। वह शुरुआती दौर था जब Bitcoin पहली बार 20 हजार dollar तक चढ़ा था
  • 999,999,999 से 1 billion पर जाने का पल देखने के लिए देर तक जागता रहा, और सोचा, “इस हफ्ते को मैं जिंदगी भर याद रखूंगा”
    60 घंटे बाद पूरी दुनिया उस हफ्ते को याद रखेगी, यह नहीं पता था

    • Timestamp 1000000000(Sat 2001-09-08 18:46:40 PDT) ने उस समय इस्तेमाल होने वाले bug report system Remedy में bug पैदा कर दिया था
      system epoch के बाद के सेकंडों को string के रूप में store करता था, लेकिन यह मानकर चल रहा था कि वे 9 digits में फिट होंगे
      1000000000 होते ही उसने आखिरी digit काटना शुरू कर दिया, इसलिए वह Sat 1973-03-03 01:46:40 PST पर लौट गया और असली समय की 10% speed से आगे बढ़ने लगा। इसे काफी जल्दी ठीक कर दिया गया
    • याद नहीं कि वह इतना पास था, लेकिन उन दिनों मैं Slashdot को obsession की तरह पढ़ता था और 9/11 के दौरान भी वह मददगार रहा
      epoch event को भी उसने जरूर cover किया होगा
  • 2009 में Boston के एक hotel lobby में हुई 1234567890 meetup में गया था

    • एक बड़े bank के trading floor पर night shift में था
      derivatives tech support के head ने बताया कि वह पल आने वाला है, तो मैंने shell खोला और watch command तथा epoch seconds में output देने वाली date command चलाकर उस पल को देखा
      फिर वापस काम पर लौट गया
    • वह पल याद है! उस समय शायद किसी bar जैसी जगह पर था, लेकिन तैयारी कर रखी थी, इसलिए laptop साथ था
      miss न हो जाए, इसलिए ऊपर वाला arrow और Enter लगातार दबाता रहा
  • Vinge की A Deepness in the Sky में मेरी पसंदीदा चीज़ों में से एक decimal time का इस्तेमाल है: ksec, Msec जैसी units
    Earth time और decimal time के conversion को दिखाने वाला एक शानदार log scale भी है

    • सही! उसी किताब की वजह से अब मुझे बिना देखे पता है कि ksec लगभग 15 मिनट होता है और Msec करीब 2 हफ्ते
      मोटे-मोटे हिसाब में यह उम्मीद से ज़्यादा बार काम आता है
      Tom Duff के observation की वजह से मुझे पहले से पता था कि Gsec लगभग एक सदी का एक-तिहाई होता है
      नहीं लगता कि हम जल्द ही आम तौर पर ऐसे system पर shift करेंगे। Biological rhythms से जुड़ी units बहुत सुविधाजनक हैं
      फिर भी space में इंसानों की बात करते समय यह ज़्यादा बार न दिखना थोड़ा हैरान करता है
      [0] "How many seconds are there in a year? If I tell you there are 3.155 x 10^7, you won't even try to remember it. On the other hand, who could forget that, to within half a percent, pi seconds is a nanocentury." --Tom Duff
    • उस किताब के software archaeologists ने गलत समझ लिया था कि time_t epoch सिर्फ 1970 नहीं, बल्कि Moon landing की ओर इशारा करता है :)
    • Emergents भी अच्छे थे। वह ऐसी दुनिया थी जहां liberal progressives ने utopia बनाया था, employment rate 100% था, और हर किसी को diamond palace मिलता था
  • 19 जनवरी 2038 तक 5,148 दिन बचे हैं
    अगर मैं तब तक जिंदा रहा, तो उसके अगले दिन मेरा 65वां जन्मदिन होगा। यानी digital Armageddon के ठीक समय पर पहुंचूंगा

  • decimal notation बदलने के पल की तुलना में, अपेक्षाकृत ऊंचे स्थान वाले bit के 0 से 1 में बदलने के पल को celebrate करना ज़्यादा उचित है

  • मुझे 100 million seconds की unit पसंद है
    यह 1 साल से लंबी और 10 साल से छोटी है। 1.6e8 का दौर pandemic था। 1.7e8 क्या लेकर आएगा?

  • अच्छा लगता है कि दूसरे लोग भी ऐसी चीज़ों को लेकर excited होते हैं। UNIX Timeval के fans को यह tf tool आज़माना चाहिए [1]
    एक दोस्त ने C/Lex/Yacc में जो बनाया था, उसे मैं साढ़े 15 साल तक रोज़ इस्तेमाल करता रहा, फिर वह मज़ा शेयर करने के लिए उसे Golang + Homebrew में port कर दिया
    [1] https://github.com/neomantra/tf
    brew tap neomantra/homebrew-tap
    brew install tf
    ऐसे round numbers print करके देखे। tf 10 digits पर auto-detect करता है, इसलिए seq भी वहीं से शुरू किया

    for TV in $(seq -f %.f 1000000000 100000000 2000000000); do echo $TV $TV | tf -d ; done
    2001-09-08 18:46:40 1000000000
    2004-11-09 03:33:20 1100000000
    2008-01-10 13:20:00 1200000000
    2011-03-12 23:06:40 1300000000
    2014-05-13 09:53:20 1400000000
    2017-07-13 19:40:00 1500000000
    2020-09-13 05:26:40 1600000000
    2023-11-14 14:13:20 1700000000
    2027-01-15 00:00:00 1800000000
    2030-03-17 10:46:40 1900000000
    2033-05-17 20:33:20 2000000000
    कुछ दिलचस्प dates भी हैं। -g एक line में कई values detect करता है, और -d date को शामिल करता है
    echo 1234567890 __ 3141592653 | tf -gd
    2009-02-13 15:31:30 __ 2069-07-20 17:37:33
    खुशी से इस्तेमाल करें। उम्मीद है यह समय पता करने में आपका समय बचाएगा!