يونڪس ٽائيم بابت پروگرامرز جي غلط فهميون

مان معافي ٿو گهران پيٽرڪ ميڪنزي.

ڪالهه ڊيني مون يونڪس جي وقت بابت ڪجهه دلچسپ حقيقتن بابت پڇيو، ۽ مون کي ياد آيو ته ڪڏهن ڪڏهن اهو مڪمل طور تي ڪم ڪري ٿو.

اهي ٽي حقيقتون انتهائي معقول ۽ منطقي لڳي رهيون آهن، نه؟

  1. يونڪس وقت 1 جنوري 1970 00:00:00 UTC کان سيڪنڊن جو تعداد آھي.
  2. جيڪڏهن توهان هڪ سيڪنڊ انتظار ڪريو، يونڪس جو وقت بلڪل هڪ سيڪنڊ سان تبديل ٿي ويندو.
  3. يونڪس وقت ڪڏهن به پوئتي نه هٽندو آهي.

هن مان ڪو به سچو ناهي.

پر اهو چوڻ ڪافي ناهي ته، ”هن مان ڪو به سچ نه آهي،“ بنا ڪنهن وضاحت جي. ڇو. وضاحت لاءِ هيٺ ڏسو. پر جيڪڏھن توھان پنھنجي لاءِ سوچڻ چاھيو، گھڙيءَ جي تصوير کي ماضيءَ ۾ نه گھڙيو!

يونڪس ٽائيم بابت پروگرامرز جي غلط فهميون
1770ع کان ٽيبل ڪلاڪ. جان ليروڪس پاران مرتب ڪيل. کان خوش آمديد مجموعا. لائسنس تحت شايع ٿيل CC BY

ٽنهي غلط فهميءَ جو هڪ ئي سبب آهي: ليپ سيڪنڊ. جيڪڏهن توهان ليپ سيڪنڊن سان واقف نه آهيو، هتي هڪ تڪڙو حوالو آهي:

UTC وقت ٻن عنصرن طرفان طئي ڪيو ويندو آهي:

  • بين الاقوامي ائٽمي وقت: دنيا جي سوين ايٽمي گھڙين مان سراسري پڙھڻ. اسان هڪ ايٽم جي برقياتي مقناطيسي خاصيتن جي ذريعي سيڪنڊ کي ماپ ڪري سگهون ٿا، ۽ اهو وقت جو سڀ کان وڌيڪ صحيح ماپ آهي جيڪو سائنس کي معلوم ٿئي ٿو.
  • عالمي وقت، ڌرتيءَ جي پنهنجي محور جي چوڌاري گردش جي بنياد تي. هڪ مڪمل انقلاب هڪ ڏينهن آهي.

مسئلو اهو آهي ته اهي ٻه انگ هميشه نه ملندا آهن. ڌرتيءَ جي گردش هڪجهڙائي نه رهي آهي - اهو آهستي آهستي سست ٿئي ٿو، تنهن ڪري يونيورسل ٽائيم ۾ ڏينهن ڊگهو ٿي وڃن ٿا. ٻئي طرف، ايٽمي ڪلاڪ شيطاني طور تي صحيح ۽ مسلسل لکين سالن کان وڌيڪ آهن.

جڏهن ٻه ڀيرا هم وقت سازي مان نڪرندا آهن، هڪ سيڪنڊ شامل ڪيو ويندو آهي يا UTC مان هٽايو ويندو آهي انهن کي هم وقت سازي ۾ واپس آڻڻ لاءِ. 1972 کان وٺي سروس آئي اي آر ايس (جيڪو هن ڪيس کي هلائي ٿو) شامل ڪيو 27 اضافي سيڪنڊ. نتيجو 27 سيڪنڊن جي مدت سان 86 UTC ڏينهن هو. نظرياتي طور تي، هڪ ڏينهن 401 سيڪنڊن جي مدي سان (مائنس هڪ) ممڪن آهي. ٻئي اختيارات يونڪس وقت جي بنيادي مفروضي جي تضاد ڪن ٿا.

يونڪس جو وقت فرض ڪري ٿو ته هر ڏينهن بلڪل 86 سيڪنڊن (400 × 60 × 60 = 24)، بغير ڪنهن اضافي سيڪنڊن جي. جيڪڏهن اهڙي جمپ ٿئي ٿي، ته پوءِ يونڪس ٽائيم يا ته هڪ سيڪنڊ جمپ ڪري ٿو، يا هڪ ۾ ٻه سيڪنڊ ڳڻائي ٿو. 86 تائين، اهو غائب آهي 400 ليپ سيڪنڊ.

تنهن ڪري اسان جي غلط فهميءَ کي هيٺين ريت پورو ڪرڻ گهرجي:

  • يونڪس ٽائيم 1 جنوري 1970 00:00:00 UTC کان سيڪنڊن جو تعداد آھي مائنس ليپ سيڪنڊ.
  • جيڪڏهن توهان هڪ سيڪنڊ انتظار ڪريو، يونڪس جو وقت بلڪل هڪ سيڪنڊ سان تبديل ٿي ويندو، جيستائين ليپ سيڪنڊ کي هٽايو ويو آهي.

    هينئر تائين، عملي طور تي سيڪنڊن کي ڪڏهن به نه هٽايو ويو آهي (۽ ڌرتيء جي گردش جي سست ٿيڻ جو مطلب آهي ته اهو ممڪن ناهي)، پر جيڪڏهن اهو ڪڏهن به ٿيو ته ان جو مطلب اهو ٿيندو ته UTC ڏينهن هڪ سيڪنڊ ننڍو ٿي ويندو. ھن حالت ۾، UTC جو آخري سيڪنڊ (23:59:59) رد ڪيو ويو آھي.

    هر يونڪس ڏينهن ۾ سيڪنڊن جو ساڳيو تعداد هوندو آهي، تنهن ڪري مختصر ڏينهن جو آخري يونڪس سيڪنڊ ڪنهن به UTC وقت سان مطابقت نه رکندو. ھتي اھو آھي جيڪو ڏسڻ ۾ اچي ٿو، چوٿين سيڪنڊن جي وقفن ۾:

    يونڪس ٽائيم بابت پروگرامرز جي غلط فهميون

    جيڪڏهن توهان 23:59:58:00 UTC تي شروع ڪيو ۽ هڪ سيڪنڊ انتظار ڪريو، يونڪس ٽائيم ٻه UTC سيڪنڊن کي اڳتي وڌائيندو ۽ يونڪس 101 ٽائيم اسٽيمپ ڪنهن کي به تفويض نه ڪيو ويندو.

  • يونڪس وقت ڪڏهن به واپس نه ٿو اچي سگهي، جيستائين هڪ ليپ سيڪنڊ شامل نه ڪيو وڃي.

    اهو عمل ۾ اڳ ۾ ئي 27 ڀيرا ٿي چڪو آهي. UTC ڏينهن جي آخر ۾، هڪ اضافي سيڪنڊ 23:59:60 تي شامل ڪيو ويو آهي. يونڪس وٽ هڪ ڏينهن ۾ سيڪنڊن جو ساڳيو تعداد آهي، تنهنڪري اهو اضافي سيڪنڊ شامل نٿو ڪري سگهي - ان جي بدران ان کي يونڪس ٽائم اسٽيمپس کي آخري سيڪنڊن لاءِ ورجائڻو پوندو. ھتي اھو آھي جيڪو ڏسڻ ۾ اچي ٿو، چوٿين سيڪنڊن جي وقفن ۾:

    يونڪس ٽائيم بابت پروگرامرز جي غلط فهميون

    جيڪڏھن توھان شروع ڪريو 23:59:60.50 ۽ انتظار ڪريو اڌ سيڪنڊ، يونڪس وقت واپس اچي ٿو اڌ سيڪنڊ کان، ۽ يونڪس 101 ٽائم اسٽيمپ ٻن UTC سيڪنڊن جي برابر آهي.

اهي شايد يونڪس جي ڀيٽ ۾ صرف عجيب نه آهن - بس جيڪي مون ڪالهه ياد ڪيو.

وقت - تمام عجيب شيء.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو