د یونیکس وخت په اړه د پروګرام کونکو غلط فهمۍ

زه بخښنه غواړم پیټریک مکینزي.

پرون ډینی ما د یونیکس وخت په اړه د ځینې په زړه پورې حقایقو په اړه وپوښتل، او ما په یاد ولرم چې ځینې وختونه دا په بشپړ ډول غیر ارادي کار کوي.

دا درې حقایق خورا معقول او منطقي ښکاري، نه؟

  1. د یونیکس وخت د جنوري 1، 1970 00:00:00 UTC راهیسې د ثانیو شمیر دی.
  2. که تاسو دقیقا یوه ثانیه انتظار وکړئ ، د یونیکس وخت به په دقیقه توګه د یوې ثانیې لخوا بدل شي.
  3. د یونیکس وخت هیڅکله شاته نه ځي.

له دې څخه هیڅ هم ریښتیا ندي.

مګر دا کافي ندي چې په ساده ډول ووایاست ، "له دې څخه هیڅ هم ریښتیا ندي ،" پرته له توضیح کولو. ولې. د توضیحاتو لپاره لاندې وګورئ. مګر که تاسو د ځان لپاره فکر کول غواړئ، د ساعت انځور څخه تیر مه کوئ!

د یونیکس وخت په اړه د پروګرام کونکو غلط فهمۍ
د میز ساعت د 1770 څخه. د جان لیروکس لخوا تالیف شوی. څخه د ښه راغلاست ټولګه. د جواز لاندې خپور شوی د CC BY

ټولې درې غلط فهمۍ یو لامل لري: لیپ ثانیې. که تاسو د لیپ ثانیو سره بلد نه یاست، دلته یو چټک حواله ده:

د UTC وخت د دوو فکتورونو لخوا ټاکل کیږي:

  • نړیوال اټومي وخت: په ټوله نړۍ کې د سلګونو اټومي ساعتونو څخه اوسط لوستل. موږ کولی شو د اتوم د بریښنایی مقناطیسي ځانګړتیاو په واسطه دوهم اندازه اندازه کړو، او دا د ساینس لپاره پیژندل شوي وخت خورا دقیق اندازه ده.
  • د نړۍ وختد خپل محور په شاوخوا کې د ځمکې د گردش پر بنسټ. یو بشپړ انقلاب یوه ورځ ده.

ستونزه دا ده چې دا دوه شمیرې تل سره سمون نلري. د ځمکې گردش یوشان نه دی - دا په تدریجي ډول ورو کیږي، نو په یونیورسل وخت کې ورځې اوږدې کیږي. له بلې خوا، اټومي ساعتونه په میلیونونو کلونو کې په شیطاني توګه دقیق او ثابت دي.

کله چې دوه ځله له ترکیب څخه ووځي، یو ثانیه اضافه کیږي یا له UTC څخه لرې کیږي ترڅو دوی بیرته همغږي ته راوړي. له 1972 راهیسې خدمت IERS (کوم چې دا قضیه پرمخ وړي) 27 اضافي ثانیې اضافه کړې. پایله 27 UTC ورځې وه چې د 86 ثانیو موده وه. په تیوریکي توګه، یوه ورځ د 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

Add a comment