توقيت يونكس

مرّ وقت يونكس1,000,000,000 ثانية في 2001-09-09T01:46:40Z. [ 1 ] تم الاحتفال بذلك في كوبنهاغن ، الدنمارك ، في حفل أقامته مجموعة مستخدمي يونكس الدنماركية ، في الساعة 03:46:40 بالتوقيت المحلي.

يُعدّ توقيت يونكس [ a ] تمثيلاً للتاريخ والوقت شائع الاستخدام في الحوسبة . يقيس الوقت بعدد الثواني غير الكبيسة التي انقضت منذ الساعة 00:00:00 بالتوقيت العالمي المنسق ( UTC) في 1 يناير 1970، وهو بداية حقبة يونكس . على سبيل المثال، في منتصف ليل 1 يناير 2010، كان توقيت يونكس 1262304000. 

نشأ توقيت يونكس كتوقيت نظام تشغيل يونكس ، ثم شاع استخدامه في أنظمة تشغيل الحواسيب الأخرى ، وأنظمة الملفات ، ولغات البرمجة ، وقواعد البيانات . وفي الحوسبة الحديثة، تُخزَّن القيم أحيانًا بدقة أعلى ، مثل الميكروثانية أو النانوثانية .

تعريف

يُعرَّف وقت يونكس حاليًا بأنه عدد الثواني غير الكبيسة التي انقضت منذ الساعة 00:00:00  بالتوقيت العالمي المنسق (UTC) يوم الخميس الموافق 1  يناير 1970، والذي يُشار إليه باسم حقبة يونكس . [ 3 ] عادةً ما يُشفَّر وقت يونكس كعدد صحيح مُوَقَّع .

توقيت يونكسيمثل الصفر  منتصف الليل بالتوقيت العالمي المنسق (UTC) في 1 يناير 1970، ويزداد وقت يونكس بمقدار 1 لكل ثانية غير كبيسة بعد ذلك. على سبيل المثال، يُمثل 00:00:00 بالتوقيت العالمي المنسق  (UTC) في 1 يناير 1971 في وقت يونكس على النحو التالي: 31,536,000 . تشير القيم السالبة، في الأنظمة التي تدعمها، إلى أوقات قبل حقبة يونكس، حيث تتناقص القيمة بمقدار 1 لكل ثانية غير كبيسة قبل الحقبة. على سبيل المثال، يُمثَّل الوقت 00:00:00 بالتوقيت العالمي المنسق في 1 يناير 1969 بتوقيت يونكس على النحو  التالي : -31 536 000 .

يُشار أحيانًا إلى وقت يونكس باسم وقت الحقبة . قد يكون هذا مُضللاً، لأن وقت يونكس ليس نظام الوقت الوحيد القائم على حقبة زمنية، كما أن حقبة يونكس ليست الحقبة الزمنية الوحيدة المستخدمة في أنظمة الوقت الأخرى. [ 5 ]

الثواني الكبيسة

يختلف توقيت يونكس عن كل من التوقيت العالمي المنسق (UTC) والتوقيت الذري الدولي (TAI) في طريقة تعامله مع الثواني الكبيسة . يتضمن التوقيت العالمي المنسق ثواني كبيسة لتصحيح الفرق بين التوقيت الدقيق، كما تقيسه الساعات الذرية ، والتوقيت الشمسي ، المتعلق بموقع الأرض بالنسبة للشمس. أما التوقيت الذري الدولي (TAI)، فيكون فيه كل يوم دقيقًا.يبلغ طوله 86400 ثانية، ويتجاهل التوقيت الشمسي، ويفقد تزامنه تدريجيًا مع دوران الأرض مع تباطؤ دورانها بمعدل 1.5  مللي ثانية تقريبًا يوميًا لكل قرن . في نظام يونكس الزمني، يحتوي كل يوم على 86400 ثانية بالضبط86400 ثانية . تستخدم كل ثانية كبيسة الطابع الزمني للثانية التي تسبقها أو تليها مباشرة. [ 3 ]

في يوم عادي بتوقيت UTC، والذي تبلغ مدتهخلال 86400 ثانية، يتغير رقم الوقت في نظام يونكس بشكل مستمر طوال منتصف الليل. على سبيل المثال، في نهاية اليوم المستخدم في الأمثلة أعلاه، تتطور تمثيلات الوقت على النحو التالي:

التوقيت في نظام يونكس خلال منتصف الليل حتى 17 سبتمبر 2004 (بدون ثوانٍ كبيسة)
تاي (17 سبتمبر 2004)التوقيت العالمي المنسق (16 إلى 17 سبتمبر 2004)توقيت يونكس
2004-09-17T00:00:30.752004-09-16T23:59:58.751 095 379 198 .75
2004-09-17T00:00:31.002004-09-16T23:59:59.001 095 379 199 .00
2004-09-17T00:00:31.252004-09-16T23:59:59.251 095 379 199 .25
2004-09-17T00:00:31.502004-09-16T23:59:59.501 095 379 199 .50
2004-09-17T00:00:31.752004-09-16T23:59:59.751095379199.75
2004-09-17T00:00:32.002004-09-17T00:00:00.001 095 379 200 .00
2004-09-17T00:00:32.252004-09-17T00:00:00.251 095 379 200 .25
2004-09-17T00:00:32.502004-09-17T00:00:00.501 095 379 200 .50
2004-09-17T00:00:32.752004-09-17T00:00:00.751 095 379 200 .75
2004-09-17T00:00:33.002004-09-17T00:00:01.001 095 379 201 .00
2004-09-17T00:00:33.252004-09-17T00:00:01.251 095 379 201 .25

عندما تحدث ثانية كبيسة ، فإن يوم التوقيت العالمي المنسق (UTC) لا يكون بالضبطمدة 86400 ثانية ورقم وقت يونكس (الذي يزيد دائمًا بمقدار دقيق)يشهد نظام يونكس انقطاعًا في عداد الوقت (86400 يوميًا ) . قد تكون الثواني الكبيسة موجبة أو سالبة. لم يُعلن عن أي ثانية كبيسة سالبة، ولكن في حال حدوث ذلك، سيقفز رقم الوقت في يونكس بمقدار 1 في نهاية اليوم الذي يحتوي على ثانية كبيسة سالبة، ليبدأ اليوم التالي. أما خلال الثانية الكبيسة الموجبة في نهاية اليوم، والتي تحدث كل عام ونصف تقريبًا في المتوسط، فيزداد رقم الوقت في يونكس باستمرار خلال الثانية الكبيسة، ثم يقفز مرة أخرى بمقدار 1 في نهاية الثانية الكبيسة (ليعود إلى بداية اليوم التالي). على سبيل المثال، هذا ما حدث في أنظمة POSIX.1 المتوافقة تمامًا مع معيار POSIX.1 في نهاية عام 1998.

التوقيت في نظام يونكس عبر منتصف الليل إلى 1 يناير 1999 (ثانية كبيسة موجبة)
تاي (1 يناير 1999)التوقيت العالمي المنسق (31 ديسمبر 1998 إلى 1 يناير 1999)توقيت يونكس
1999-01-01T00:00:29.751998-12-31T23:59:58.75915 148 798 .75
1999-01-01T00:00:30.001998-12-31T23:59:59.00915 148 799 .00
1999-01-01T00:00:30.251998-12-31T23:59:59.25915 148 799 .25
1999-01-01T00:00:30.501998-12-31T23:59:59.50915 148 799 .50
1999-01-01T00:00:30.751998-12-31T23:59:59.75915 148 799 .75
1999-01-01T00:00:31.001998-12-31T23:59:60.00915 148 800 .00
1999-01-01T00:00:31.251998-12-31T23:59:60.25915 148 800 .25
1999-01-01T00:00:31.501998-12-31T23:59:60.50915 148 800 .50
1999-01-01T00:00:31.751998-12-31T23:59:60.75915 148 800 .75
1999-01-01T00:00:32.001999-01-01T00:00:00.00915 148 800 .00
1999-01-01T00:00:32.251999-01-01T00:00:00.25915 148 800 .25
1999-01-01T00:00:32.501999-01-01T00:00:00.50915 148 800 .50
1999-01-01T00:00:32.751999-01-01T00:00:00.75915 148 800 .75
1999-01-01T00:00:33.001999-01-01T00:00:01.00915 148 801 .00
1999-01-01T00:00:33.251999-01-01T00:00:01.25915 148 801 .25

تتكرر أرقام التوقيت في نظام يونكس في الثانية التي تلي مباشرةً الثانية الكبيسة الموجبة.وبالتالي، فإن الرقم 1 483 228 800 غامض: إذ يمكن أن يشير إما إلى بداية الثانية الكبيسة (2016-12-31 23:59:60) أو إلى نهايتها، بعد ثانية واحدة (2017-01-01 00:00:00). في الحالة النظرية التي تحدث فيها ثانية كبيسة سالبة، لا يوجد أي غموض، بل يوجد نطاق من أرقام التوقيت في نظام يونكس لا يشير إلى أي نقطة في التوقيت العالمي المنسق (UTC) على الإطلاق.

غالبًا ما تُنفَّذ ساعة يونكس باستخدام نوع مختلف من معالجة الثواني الكبيسة الموجبة المرتبطة ببروتوكول وقت الشبكة (NTP). ينتج عن ذلك نظام لا يتوافق مع معيار POSIX. راجع القسم أدناه المتعلق ببروتوكول NTP لمزيد من التفاصيل.

عند التعامل مع فترات زمنية لا تشمل ثانية كبيسة في التوقيت العالمي المنسق (UTC)، يكون الفرق بين رقمين زمنيين في نظام يونكس مساويًا لمدة الفترة الزمنية بينهما بالثواني. هذه تقنية حسابية شائعة. مع ذلك، عند وجود ثوانٍ كبيسة، تُعطي هذه الحسابات نتيجة خاطئة. في التطبيقات التي تتطلب هذا المستوى من الدقة، من الضروري الرجوع إلى جدول الثواني الكبيسة عند التعامل مع أوقات يونكس، وغالبًا ما يُفضّل استخدام ترميز زمني مختلف لا يعاني من هذه المشكلة.

يمكن تحويل رقم وقت يونكس بسهولة إلى وقت UTC عن طريق أخذ ناتج قسمة رقم وقت يونكس وباقي قسمته، modulo86400. ناتج القسمة هو عدد الأيام منذ بداية الحقبة، والمعيار هو عدد الثواني منذ منتصف الليل بالتوقيت العالمي المنسق في ذلك اليوم. إذا تم إدخال رقم زمني يونكس غامض بسبب ثانية كبيسة موجبة، فإن هذه الخوارزمية تفسره على أنه الوقت الذي يلي منتصف الليل مباشرة. ولا تُنتج أبدًا وقتًا يقع خلال ثانية كبيسة. أما إذا تم إدخال رقم زمني يونكس غير صالح بسبب ثانية كبيسة سالبة، فإنها تُنتج وقتًا غير صالح بالتوقيت العالمي المنسق. إذا كانت هذه الحالات مهمة، فمن الضروري الرجوع إلى جدول الثواني الكبيسة لاكتشافها.

متغير غير متزامن يعتمد على بروتوكول وقت الشبكة

عادةً ما تُنفَّذ ساعة يونكس على نمط ميلز بحيث لا يكون التعامل مع الثواني الكبيسة متزامنًا مع تغيير رقم الوقت في يونكس. ينخفض ​​رقم الوقت مبدئيًا عند موضع الثواني الكبيسة، ثم يقفز إلى الوقت الصحيح بعد ثانية واحدة من الثواني الكبيسة. هذا يُسهِّل عملية التنفيذ، وقد وُصِفَ في ورقة ميلز البحثية. [ 6 ] هذا ما يحدث عند حدوث ثانية كبيسة موجبة:

ساعة يونكس غير متزامنة على نمط ميلز عبر منتصف الليل إلى 1 يناير 1999 (ثانية كبيسة موجبة)
تاي (1 يناير 1999)التوقيت العالمي المنسق (31 ديسمبر 1998 إلى 1 يناير 1999)ولايةساعة يونكس
1999-01-01T00:00:29.751998-12-31T23:59:58.75TIME_INS915 148 798 .75
1999-01-01T00:00:30.001998-12-31T23:59:59.00TIME_INS915 148 799 .00
1999-01-01T00:00:30.251998-12-31T23:59:59.25TIME_INS915 148 799 .25
1999-01-01T00:00:30.501998-12-31T23:59:59.50TIME_INS915 148 799 .50
1999-01-01T00:00:30.751998-12-31T23:59:59.75TIME_INS915 148 799 .75
1999-01-01T00:00:31.001998-12-31T23:59:60.00TIME_INS915 148 800 .00
1999-01-01T00:00:31.251998-12-31T23:59:60.25TIME_OOP915 148 799 .25
1999-01-01T00:00:31.501998-12-31T23:59:60.50TIME_OOP915 148 799 .50
1999-01-01T00:00:31.751998-12-31T23:59:60.75TIME_OOP915 148 799 .75
1999-01-01T00:00:32.001999-01-01T00:00:00.00TIME_OOP915 148 800 .00
1999-01-01T00:00:32.251999-01-01T00:00:00.25وقت الانتظار915 148 800 .25
1999-01-01T00:00:32.501999-01-01T00:00:00.50وقت الانتظار915 148 800 .50
1999-01-01T00:00:32.751999-01-01T00:00:00.75وقت الانتظار915 148 800 .75
1999-01-01T00:00:33.001999-01-01T00:00:01.00وقت الانتظار915 148 801 .00
1999-01-01T00:00:33.251999-01-01T00:00:01.25وقت الانتظار915 148 801 .25

يمكن فك تشفير ذلك بشكل صحيح من خلال الانتباه إلى متغير حالة الثانية الكبيسة، الذي يشير بوضوح إلى ما إذا كانت القفزة قد تمت بالفعل. ويتزامن تغيير متغير الحالة مع القفزة.

يحدث وضع مشابه مع الثانية الكبيسة السالبة، حيث تكون الثانية التي تم تخطيها متأخرة قليلاً. لفترة وجيزة جدًا، يُظهر النظام رقمًا زمنيًا غير منطقي، ولكن يمكن اكتشاف ذلك من خلال حالة TIME_DEL وتصحيحه.

في هذا النوع من الأنظمة، يُخالف رقم الوقت في نظام يونكس معيار POSIX فيما يتعلق بنوعي الثواني الكبيسة. يتيح جمع متغير حالة الثانية الكبيسة مع رقم الوقت فك تشفير دقيق، وبالتالي يمكن توليد رقم الوقت الصحيح وفقًا لمعيار POSIX إذا لزم الأمر، أو يمكن تخزين وقت UTC الكامل بتنسيق أكثر ملاءمة.

يتطلب منطق فك التشفير اللازم للتعامل مع هذا النمط من ساعات يونكس فك تشفير ساعة افتراضية متوافقة مع معيار POSIX باستخدام نفس الواجهة. ويتحقق ذلك من خلال الإشارة إلى حالة TIME_INS طوال فترة الثانية الكبيسة المُضافة، ثم الإشارة إلى حالة TIME_WAIT طوال الثانية التالية مع تكرار عدّ الثواني. يتطلب هذا معالجة متزامنة للثواني الكبيسة. ولعل هذه هي أفضل طريقة للتعبير عن توقيت UTC بصيغة ساعة يونكس، عبر واجهة يونكس، عندما لا تتأثر الساعة الأساسية بالثواني الكبيسة.

صيغة تحسب الثواني الكبيسة

هناك نوع آخر، نادر الحدوث، من أنظمة ضبط الوقت في يونكس، وهو غير متوافق مع المعايير، ويتضمن زيادة قيمة الثواني جميعها، بما في ذلك الثواني الكبيسة؛ [ 7 ] بعض أنظمة لينكس مُهيأة بهذه الطريقة. [ 8 ] يُشار أحيانًا إلى الوقت المُحتفظ به بهذه الطريقة باسم "TAI" (مع العلم أنه يمكن تحويل الطوابع الزمنية إلى التوقيت العالمي المنسق UTC إذا كانت القيمة تُطابق وقتًا معروفًا فيه الفرق بين TAI وUTC)، وذلك على عكس "UTC" (مع العلم أنه ليس لكل قيم التوقيت العالمي المنسق UTC مرجع فريد في الأنظمة التي لا تحسب الثواني الكبيسة). [ 8 ]

نظرًا لأن التوقيت الذري الدولي (TAI) لا يحتوي على ثوانٍ كبيسة، ولأن كل يوم في هذا التوقيت يبلغ 86400 ثانية بالضبط، فإن هذا الترميز هو في الواقع عدّ خطي بحت للثواني المنقضية منذ 1970-01-01T00:00:10 بالتوقيت  الذري الدولي. وهذا يُسهّل العمليات الحسابية على الفترات الزمنية بشكل كبير. ولا تعاني قيم الوقت في هذه الأنظمة من الغموض الذي تعاني منه أنظمة POSIX المتوافقة تمامًا أو الأنظمة التي تعمل بنظام NTP.

في هذه الأنظمة، من الضروري الرجوع إلى جدول الثواني الكبيسة للتحويل الصحيح بين التوقيت العالمي المنسق (UTC) وتمثيل التوقيت شبه يونكس. يشبه هذا الطريقة التي يجب بها الرجوع إلى جداول المناطق الزمنية للتحويل من وإلى التوقيت المدني ؛ إذ تتضمن قاعدة بيانات المناطق الزمنية التابعة لهيئة IANA معلومات عن الثواني الكبيسة، ويستخدم نموذج التعليمات البرمجية المتاح من المصدر نفسه هذه المعلومات للتحويل بين الطوابع الزمنية المستندة إلى التوقيت الذري (TAI) والتوقيت المحلي. كما يواجه التحويل مشكلات تعريفية قبل بدء العمل بالشكل الحالي للتوقيت العالمي المنسق (UTC) في عام 1972 (انظر قسم أساس التوقيت العالمي المنسق أدناه).

على الرغم من تشابهه الظاهري، فإن هذا النظام ليس نظام توقيت يونكس. فهو يُشفّر الأوقات بقيم تختلف بعدة ثوانٍ عن قيم توقيت POSIX. وقد اقتُرحت نسخة من هذا النظام، حيث كان التوقيت 1970-01-01T00:00:00  TAI بدلاً من 1970-01-01T00:00:10  TAI، لإدراجها في معيار ISO C time.h، ولكن لم يُقبل سوى جزء التوقيت العالمي المنسق (UTC) في عام 2011. [ 9 ]tai_clock ومع ذلك، يوجد نظام مماثل في C++20.

يمثل الرقم

يمكن تمثيل رقم الوقت في نظام يونكس بأي شكل من الأشكال القادرة على تمثيل الأرقام. في بعض التطبيقات، يُمثَّل الرقم نصيًا كسلسلة من الأرقام العشرية، مما لا يُثير سوى مشاكل إضافية بسيطة. مع ذلك، فإن بعض التمثيلات الثنائية لأوقات يونكس لها أهمية خاصة.

نوع بيانات يونكس الذي يُمثل نقطة زمنية هو، في العديد من المنصات، عدد صحيح مُوَقَّع ، تقليديًا 32 بت (ولكن انظر أدناه )، يُشفِّر مباشرةً رقم وقت يونكس كما هو موضح في القسم السابق. تغطي قيمة 32 بت المُوَقَّعة حوالي 68 عامًا قبل وبعد حقبة 1970-01-01. أصغر تاريخ قابل للتمثيل هو الجمعة 13 ديسمبر 1901، وأكبر تاريخ قابل للتمثيل هو الثلاثاء 19 يناير 2038. بعد ثانية واحدة من 2038-01-19T03:14:07Z، سيحدث تجاوز في هذا التمثيل فيما يُعرف بمشكلة عام 2038 .time_t 

يُشفّر UUIDv 7 الطابع الزمني لعصر يونكس (بالمللي ثانية) في حقل غير مُوقّع بطول 48 بت. هذا التمثيل صالح حتى عام 10889. [ 10 ]

في بعض أنظمة التشغيل الأحدث، time_tتم توسيع نطاقها إلى 64 بت. وهذا يوسع نطاق الأوقات التي يمكن تمثيلها إلى292 277 264 695 ( 292.3 مليار) سنة في كلا الاتجاهين، وهو ما يزيد عن عشرين ضعف عمر الكون الحالي .

كان هناك جدل في البداية حول ما إذا كان time_tينبغي أن يكون نظام يونكس موقّعًا أم غير موقّع. فإذا كان غير موقّع، سيتضاعف نطاقه في المستقبل، مما يؤجل تجاوز سعة 32 بت (لمدة 68 عامًا). ومع ذلك، سيصبح عاجزًا عن تمثيل الأزمنة السابقة للحقبة. ويُجمع الرأي على أن time_tيكون موقّعًا، وهذا هو الإجراء المعتاد. تستخدم منصة تطوير البرمجيات للإصدار السادس من نظام التشغيل QNX نوع بيانات غير موقّع 32 بت time_t، على الرغم من أن الإصدارات الأقدم كانت تستخدم نوعًا موقّعًا.

تتضمن مواصفات POSIX وOpen Group Unix مكتبة C القياسية ، التي تشمل أنواع البيانات الزمنية والدوال المُعرّفة في ملف الرأس. ينص معيار ISO C على أن يكون نوع البيانات حسابيًا، ولكنه لا يُلزم بنوع أو ترميز مُحدد له. بينما يشترط POSIX أن يكون نوع البيانات عددًا صحيحًا، ولكنه لا يُلزم بأن يكون مُوقّعًا أو غير مُوقّع.<time.h>time_ttime_t

لا يمتلك نظام يونكس تقليدًا لتمثيل أرقام الوقت غير الصحيحة مباشرةً ككسور ثنائية. بدلاً من ذلك، تُمثَّل الأوقات ذات الدقة الأقل من ثانية باستخدام أنواع بيانات مركبة تتكون من عددين صحيحين، الأول هو a time_t(الجزء الصحيح من وقت يونكس)، والثاني هو الجزء الكسري من رقم الوقت بوحدات جزء من المليون (بوحدة جزء من struct timevalالمليون) أو جزء من المليار (بوحدة جزء من المليار struct timespec). [ 11 ] [ 12 ] توفر هذه البنى تنسيق بيانات بنقطة ثابتة قائم على النظام العشري ، وهو مفيد لبعض التطبيقات، وسهل التحويل لتطبيقات أخرى.

أساس التوقيت العالمي المنسق

لم يُعتمد الشكل الحالي للتوقيت العالمي المنسق (UTC)، مع الثواني الكبيسة، إلا ابتداءً من 1  يناير 1972. قبل ذلك، ومنذ 1  يناير 1961، كان هناك شكل أقدم للتوقيت العالمي المنسق، لم يقتصر على وجود فواصل زمنية عرضية بأعداد غير صحيحة من الثواني، بل كانت الثانية في التوقيت العالمي المنسق أطول قليلاً من الثانية في النظام الدولي للوحدات، وتتغير دوريًا لتقريب دوران الأرض باستمرار. قبل عام 1961، لم يكن هناك توقيت عالمي منسق، وقبل عام 1958 لم يكن هناك استخدام واسع النطاق للتوقيت الذري ؛ في تلك الحقبة، استُخدم تقريب ما للتوقيت العالمي المنسق (GMT ) (المستند مباشرةً إلى دوران الأرض) بدلاً من المقياس الزمني الذري.

لا يُعدّ التعريف الدقيق لتوقيت يونكس، باعتباره ترميزًا للتوقيت العالمي المنسق (UTC)، محلّ جدل إلا عند تطبيقه على الشكل الحالي للتوقيت العالمي المنسق. ولا يؤثر تاريخ حقبة يونكس السابقة لبداية هذا الشكل من التوقيت العالمي المنسق على استخدامه في هذه الحقبة: فعدد الأيام من 1  يناير 1970 (حقبة يونكس) إلى 1  يناير 1972 (بداية التوقيت العالمي المنسق) أمرٌ لا جدال فيه، وعدد الأيام هو كل ما يهم في توقيت يونكس.

معنى قيم الوقت في نظام يونكس أدناهلا يُعرَّف التوقيت +63 072 000 (أي قبل 1 يناير 1972) تعريفًا دقيقًا. ويُفهم أساس هذه الأوقات في أنظمة يونكس على أنه تقريب غير محدد للتوقيت العالمي المنسق (UTC). نادرًا ما كانت أجهزة الكمبيوتر في تلك الحقبة مزودة بساعات مضبوطة بدقة كافية لتوفير طوابع زمنية ذات معنى بأجزاء من الثانية. لا يُعد توقيت يونكس طريقة مناسبة لتمثيل الأوقات قبل عام 1972 في التطبيقات التي تتطلب دقة بأجزاء من الثانية؛ إذ يجب على هذه التطبيقات، على الأقل، تحديد شكل التوقيت العالمي المنسق (UT) أو توقيت غرينتش (GMT) الذي تستخدمه.

اعتبارًا من عام 2009يجري النظر في إمكانية إنهاء استخدام الثواني الكبيسة في التوقيت المدني. [ 13 ] ومن الوسائل المحتملة لتنفيذ هذا التغيير تعريف مقياس زمني جديد، يُسمى التوقيت الدولي ، يتطابق مبدئيًا مع التوقيت العالمي المنسق (UTC)، ولكنه لا يتضمن ثواني كبيسة بعد ذلك، وبالتالي يبقى بفارق زمني ثابت عن التوقيت الذري الدولي (TAI). إذا حدث هذا، فمن المرجح أن يُحدد توقيت يونكس مستقبلًا وفقًا لهذا المقياس الزمني الجديد، بدلًا من التوقيت العالمي المنسق. إن عدم اليقين بشأن حدوث ذلك لا يجعل توقيت يونكس المستقبلي أقل قابلية للتنبؤ مما هو عليه الآن: فلو لم يتضمن التوقيت العالمي المنسق أي ثواني كبيسة أخرى، لكانت النتيجة هي نفسها.

تاريخ

كانت الإصدارات الأولى من نظام يونكس تعتمد على عدد صحيح 32 بت يتزايد بمعدل 60 هرتز ، وهو معدل ساعة النظام في أجهزة أنظمة يونكس الأولى. لم تكن الطوابع الزمنية المخزنة بهذه الطريقة قادرة على تمثيل نطاق زمني يزيد قليلاً عن سنتين وربع. تم تغيير نقطة البداية (epoch) مع إصدارات يونكس لمنع تجاوز السعة، حيث استُخدم منتصف ليل 1 يناير 1971 و1 يناير 1972 كنقطة بداية خلال المراحل الأولى لتطوير يونكس. كما افتقرت التعريفات المبكرة لنظام يونكس إلى المناطق الزمنية. [ 14 ] [ 15 ]   

تم اختيار تاريخ 1  يناير 1970 00:00:00 بالتوقيت العالمي المنسق (UTC) بشكل عشوائي من قبل مهندسي يونكس لأنه كان تاريخًا مناسبًا للعمل. تم تغيير الدقة للعد بالثواني لتجنب تجاوز السعة على المدى القصير. [ 1 ]

عند كتابة معيار POSIX.1 ، طُرح سؤال حول كيفية تحديد الوقت بدقة time_tفي ظل وجود الثواني الكبيسة. ناقشت لجنة POSIX ما إذا كان ينبغي أن يبقى وقت يونكس، كما هو مُخطط له، عدًا خطيًا للثواني منذ بداية الحقبة، على حساب تعقيد التحويلات مع التوقيت المدني، أو تمثيلًا للتوقيت المدني، على حساب عدم الاتساق حول الثواني الكبيسة. لم تكن ساعات الحواسيب في ذلك الوقت مضبوطة بدقة كافية لتشكيل سابقة في أي من الاتجاهين.

تأثرت لجنة POSIX بالحجج المناهضة لتعقيد وظائف المكتبة، [ 16 ] وحددت توقيت يونكس تعريفًا بسيطًا باستخدام عناصر التوقيت العالمي المنسق (UTC). كان هذا التعريف بسيطًا لدرجة أنه لم يشمل قاعدة السنة الكبيسة في التقويم الميلادي، وجعل عام 2100 سنة كبيسة.

صحّح إصدار عام 2001 من معيار POSIX.1 قاعدة السنة الكبيسة الخاطئة في تعريف وقت يونكس، لكنه أبقى على التعريف الأساسي لوقت يونكس باعتباره ترميزًا للتوقيت العالمي المنسق (UTC) وليس مقياسًا زمنيًا خطيًا. منذ منتصف التسعينيات، تُضبط ساعات الحاسوب بدقة كافية تجعل هذا الأمر مهمًا، وغالبًا ما تُضبط باستخدام تعريف وقت يونكس القائم على التوقيت العالمي المنسق. وقد نتج عن ذلك تعقيد كبير في تطبيقات يونكس، وفي بروتوكول وقت الشبكة (NTP )، لتنفيذ خطوات في رقم وقت يونكس كلما حدثت ثوانٍ كبيسة.

الاستخدام

يُستخدم توقيت يونكس على نطاق واسع في الحوسبة، متجاوزًا استخدامه الأصلي كتوقيت نظام يونكس . يتوفر توقيت يونكس في جميع واجهات برمجة تطبيقات الأنظمة تقريبًا، بما في ذلك تلك التي توفرها أنظمة التشغيل المبنية على يونكس وغير المبنية عليه . توفر معظم لغات البرمجة الحديثة واجهات برمجة تطبيقات للتعامل مع توقيت يونكس أو تحويله إلى بنية بيانات أخرى. كما يُستخدم توقيت يونكس كآلية لتخزين الطوابع الزمنية في العديد من أنظمة الملفات ، وتنسيقات الملفات ، وقواعد البيانات .

تستخدم مكتبة C القياسية وقت يونكس لجميع دوال التاريخ والوقت، ويُشار إلى وقت يونكس أحيانًا بالرمز time_t، وهو اسم نوع البيانات المستخدم للطوابع الزمنية في لغتي C و C++ . تُعرَّف دوال وقت يونكس في لغة C كواجهة برمجة تطبيقات وقت النظام في مواصفات POSIX . [ 17 ] تُستخدم مكتبة C القياسية على نطاق واسع في جميع أنظمة تشغيل سطح المكتب الحديثة، بما في ذلك مايكروسوفت ويندوز والأنظمة الشبيهة بيونكس مثل macOS ولينكس ، حيث تُعد واجهة برمجة قياسية. [ 18 ] [ 19 ] [ 20 ]

يوفر نظام iOS واجهة برمجة تطبيقات Swift التي تستخدم افتراضيًا تاريخ 1  يناير 2001، ولكن يمكن استخدامها أيضًا مع طوابع زمنية Unix. [ 21 ] يستخدم نظام Android توقيت Unix إلى جانب المنطقة الزمنية لواجهة برمجة تطبيقات وقت النظام. [ 22 ]

لا يستخدم نظام ويندوز وقت يونكس لتخزين الوقت داخليًا، ولكنه يستخدمه في واجهات برمجة التطبيقات (APIs) الخاصة بالنظام، والمُقدمة بلغة C++ والتي تُطبق مواصفات مكتبة C القياسية. [ 18 ] يُستخدم وقت يونكس في تنسيق PE لملفات ويندوز التنفيذية. [ 23 ]

يتوفر نظام التوقيت يونكس عادةً في لغات البرمجة الرئيسية، ويُستخدم على نطاق واسع في برمجة تطبيقات سطح المكتب والهواتف المحمولة والويب. توفر لغة جافا كائن Instant الذي يخزن طابعًا زمنيًا يونكس بالثواني والنانو ثانية. [ 24 ] توفر لغة بايثون مكتبة time التي تستخدم نظام التوقيت يونكس. [ 25 ] توفر لغة جافا سكريبت مكتبة Date التي توفر وتخزن الطوابع الزمنية بالمللي ثانية منذ بداية حقبة يونكس، وهي مُطبقة في جميع متصفحات الويب الحديثة على سطح المكتب والهواتف المحمولة ، بالإضافة إلى بيئات خوادم جافا سكريبت مثل Node.js. [ 26 ]

تُنفذ لغة Free Pascal وقت UNIX باستخدام وظائف GetTickCount (غير موقعة 32 بت مهملة) و GetTickCount64 (غير موقعة 64 بت) بدقة 1 مللي ثانية على منصات شبيهة بنظام Unix .

تميل أنظمة الملفات المصممة للاستخدام مع أنظمة التشغيل المبنية على يونكس إلى استخدام توقيت يونكس. يستخدم كل من نظام الملفات APFS ، المستخدم افتراضيًا في جميع أجهزة أبل، ونظام الملفات ext4 ، المستخدم على نطاق واسع في أجهزة لينكس وأندرويد، توقيت يونكس بالنانو ثانية لطوابع الملفات الزمنية. [ 27 ] [ 28 ] يمكن للعديد من تنسيقات ملفات الأرشيف تخزين الطوابع الزمنية بتوقيت يونكس، بما في ذلك RAR و tar . [ 29 ] [ 30 ] يُستخدم توقيت يونكس أيضًا بشكل شائع لتخزين الطوابع الزمنية في قواعد البيانات، بما في ذلك MySQL و PostgreSQL . [ 31 ] [ 32 ]

القيود

صُمم نظام التوقيت في يونكس لترميز التواريخ والأوقات بطريقة مختصرة لاستخدامها داخليًا في الحواسيب. وهو غير مصمم ليقرأه البشر بسهولة أو لتخزين قيم تعتمد على المنطقة الزمنية. كما أنه يقتصر افتراضيًا على تمثيل الوقت بالثواني، مما يجعله غير مناسب للاستخدام عند الحاجة إلى قياس أكثر دقة للوقت، كما هو الحال عند قياس وقت تنفيذ البرامج. [ 33 ]

نطاق زمني قابل للتمثيل

صورة متحركة توضح تجاوز الوقت في نظام يونكس ذي 32 بت والذي سيحدث في عام 2038

لا يتطلب نظام يونكس الزمني، بحسب تصميمه، حجمًا محددًا للتخزين، لكن معظم تطبيقاته الشائعة تستخدم عددًا صحيحًا مُوَقَّعًا بنفس حجم كلمة الجهاز الأساسي. ولأن غالبية الحواسيب الحديثة إما 32 بت أو 64 بت ، ولا يزال عدد كبير من البرامج مكتوبًا بنمط توافق 32 بت، فهذا يعني أن العديد من البرامج التي تستخدم نظام يونكس الزمني تستخدم حقول أعداد صحيحة مُوَقَّعة 32 بت. القيمة القصوى لعدد صحيح مُوَقَّع 32 بت هي 2^ 31 - 1 ، والقيمة الدنيا هي -2 ^ 31 ، مما يجعل من المستحيل تمثيل التواريخ قبل 13 ديسمبر 1901 (في الساعة 20:45:52 بالتوقيت العالمي المنسق) أو بعد 19 يناير 2038 (في الساعة 03:14:07 بالتوقيت العالمي المنسق). قد يؤثر هذا التوقف المبكر على قواعد البيانات التي تخزن معلومات تاريخية. في بعض قواعد البيانات التي تستخدم توقيت يونكس 32 بت للطوابع الزمنية، قد يكون من الضروري تخزين الوقت في حقل مختلف، مثل سلسلة نصية، لتمثيل التواريخ قبل عام 1901. تُعرف هذه المشكلة المتأخرة باسم مشكلة عام 2038 ، وقد تُسبب مشاكل مع اقتراب هذا التاريخ، حيث ستعود التواريخ التي تتجاوز عام 2038 إلى بداية النطاق الزمني القابل للتمثيل في عام 1901. [ 33 ] : 60 [ 34 ]

لا تُشكّل حدود نطاق التواريخ مشكلةً مع تمثيلات 64 بت لوقت يونكس، إذ يتجاوز النطاق الفعلي للتواريخ التي يمكن تمثيلها بوقت يونكس المخزّن في عدد صحيح مُوقّع 64 بت، 584 مليار سنة، أو 292 مليار سنة في أيٍّ من اتجاهي حقبة 1970. [ 33 ] : 60-61 [ 35 ]

البدائل

لا يُعدّ توقيت يونكس المعيار الوحيد لحساب الوقت انطلاقًا من حقبة زمنية. فبنية لغة البرمجة C#DateTime ، FILETIMEونوع البيانات في نظام ويندوز ، ووظيفة Azure Cosmos DB ، GetCurrentTicksStaticتخزن الوقت على شكل عدد من الفترات الزمنية التي تبلغ 100 نانوثانية، والتي انقضت منذ الساعة 0:00 بتوقيت غرينتش في 1 يناير 1 ميلادي ، [ 36 ] و 1 يناير 1601، [ 37 ] و1 يناير 1970، [ 38 ] ولن يتجاوز هذا الحد حتى الأعوام 29228، [ 39 ] [ 40 ] و30828، [ 39 ] [ 41 ] و31197، [ 42 ] على التوالي. يُستخدم توقيت حقبة ويندوز لتخزين الطوابع الزمنية للملفات [ 43 ] وفي بروتوكولات مثل خدمة وقت Active Directory [ 44 ] وبروتوكول Server Message Block .     

يستخدم بروتوكول وقت الشبكة المستخدم لتنسيق الوقت بين أجهزة الكمبيوتر حقبة زمنية تبدأ من 1  يناير 1900، ويتم حسابها بعدد صحيح غير مُوقّع من 32 بت للثواني، وعدد صحيح غير مُوقّع آخر من 32 بت لأجزاء الثانية، والتي تتكرر كل 2^ 32 ثانية (مرة واحدة تقريبًا كل 136 عامًا). [ 45 ]

توفر العديد من التطبيقات ولغات البرمجة طرقًا لتخزين الوقت مع تحديد المنطقة الزمنية بشكل صريح. [ 46 ] كما توجد أيضًا عدة معايير لتنسيق الوقت بحيث يمكن قراءتها من قبل البشر وأجهزة الكمبيوتر على حد سواء، مثل ISO 8601 .

أحداث بارزة في زمن يونكس

لطالما دأب مُحبو نظام يونكس على إقامة "حفلات تايم تي" (تُنطق " حفلات شاي تايم ") للاحتفاء بقيم مميزة لرقم الوقت في يونكس. [ 47 ] [ 48 ] تُشابه هذه الاحتفالات احتفالات رأس السنة التي تُقام مع بداية كل عام في العديد من التقاويم. ومع انتشار استخدام تايم يونكس، انتشرت عادة الاحتفال بمناسباته. وعادةً ما يتم الاحتفال بقيم الوقت التي تُمثل أعدادًا عشرية صحيحة ، وذلك اتباعًا لاتفاقية يونكس في عرض time_tالقيم بالنظام العشري. وفي بعض المجموعات، يتم الاحتفال أيضًا بالأعداد الثنائية الصحيحة، مثل +2 30 ، الذي حدث في الساعة 13:37:04 بالتوقيت العالمي المنسق (UTC) يوم السبت 10 يناير 2004. 

عادة ما توصف الأحداث التي تحتفل بها هذه الأحداث بأنها " عدد الثواني منذ حقبة يونكس"، لكن هذا غير دقيق؛ كما نوقش أعلاه، بسبب معالجة الثواني الكبيسة في وقت يونكس، فإن عدد الثواني المنقضية منذ حقبة يونكس يكون أكبر قليلاً من رقم وقت يونكس للأوقات اللاحقة للحقبة.

  • في الساعة 18:36:57 بالتوقيت العالمي المنسق يوم الأربعاء، 17  أكتوبر 1973، ظهر التاريخ لأول مرة بتنسيق ISO 8601 [ b ] (1973-10-17) ضمن أرقام وقت يونكس (119731017).
  • في تمام الساعة 01:46:40 بالتوقيت العالمي المنسق يوم الأحد الموافق 9  سبتمبر 2001، بلغ عدد المليارات في نظام يونكس (رقم وقت يونكس)تم الاحتفال بمرور 1,000,000,000 عام. [ 49 ] اسم " بيلينيوم " هو مزيج من كلمتي " مليار" و " ألفية" . [ 50 ] [ 51 ] واجهت بعض البرامج التي تخزن الطوابع الزمنية باستخدام تمثيل نصي أخطاء في الفرز، كما هو الحال في فرز النصوص، حيث تم فرز الأوقات التي تلي تاريخ التغيير والتي تبدأ بالرقم 1 بشكل خاطئ قبل الأوقات السابقة التي تبدأ بالرقم 9. وشملت البرامج المتأثرة قارئ Usenet الشهير KNode وبرنامج البريد الإلكتروني KMail ، وهو جزء من بيئة سطح المكتب KDE . كانت هذه الأخطاء في الغالب تجميلية بطبيعتها وتم إصلاحها بسرعة بمجرد ظهور المشاكل. كما أثرت المشكلة على العديد من مرشحات تنسيق المستندات Filtrix المتوفرة مع إصدارات Linux من WordPerfect ؛ وقد أنشأ مجتمع المستخدمين تصحيحًا لحل هذه المشكلة، نظرًا لأن شركة Corel لم تعد تبيع أو تدعم هذا الإصدار من البرنامج. [ 52 ]
  • في تمام الساعة 23:31:30 بالتوقيت العالمي المنسق يوم الجمعة الموافق 13  فبراير 2009، وصل التمثيل العشري لتوقيت يونكس إلى1,234,567,890 ثانية. [ 53 ] احتفلت جوجل بهذا الحدث برسومات جوجل المبتكرة ( Google Doodle) . [54] وأقيمت حفلات واحتفالات أخرى في جميع أنحاء العالم، بين مختلف الثقافات الفرعية التقنية، للاحتفال بهذا الإنجاز .1,234,567,890 ثانية . [ 47 ] [ 55 ]

تصف رواية فيرنور فينج " عمق في السماء" حضارة تجارية فضائية في المستقبل البعيد، لا تزال تستخدم حقبة يونكس. يعتقد " المبرمج-عالم الآثار " المسؤول عن إيجاد وصيانة الشفرات البرمجية القابلة للاستخدام في أنظمة الحاسوب المتطورة، في البداية أن الحقبة تشير إلى زمن هبوط الإنسان على سطح القمر ، لكنه يدرك لاحقًا أنها "الثانية الصفرية لأحد أوائل أنظمة تشغيل الحاسوب البشرية". [ 56 ]

انظر أيضاً

ملحوظات

  1. يُعرف وقت يونكس أيضًا باسم "وقت الحقبة"، أو "وقت POSIX "، [ 2 ] أو "الثواني منذ بداية الحقبة"، [ 3 ] أو "الطابع الزمني ليونكس" أو "وقت حقبة يونكس". [ 4 ]
  2. تم الاستشهاد به بأثر رجعي منذ نشر معيار ISO 8601 في عام 1988.

مراجع

  1. 1 2 فرهاد، مانجو (8 سبتمبر 2001). "يونكس: دقات الساعة حتى المليار" . وايرد . ISSN 1059-1028 . مؤرشف من الأصل في 11 سبتمبر 2022. تم الاطلاع عليه في 16 أكتوبر 2022 . 
  2. «مواصفات مجموعة Open Group الأساسية، الإصدار 7، الأساس المنطقي: تعريفات الأساس، القسم أ.4 المفاهيم العامة» . مجموعة Open Group . مؤرشف من الأصل في 15 نوفمبر 2017. تم الاطلاع عليه في 9 سبتمبر 2019 .
  3. ١ ٢ ٣ "مواصفات المجموعة المفتوحة الأساسية، الإصدار ٧، القسم ٤.١٦: الثواني منذ بداية الحقبة" . المجموعة المفتوحة . مؤرشف من الأصل في ٢٢ ديسمبر ٢٠١٧. تم الاطلاع عليه في ٢٢ يناير ٢٠١٧ .
  4. ماثيو، نيل؛ ستونز، ريتشارد (2008). "بيئة لينكس". مقدمة في برمجة لينكس . إنديانابوليس، إنديانا، الولايات المتحدة الأمريكية: وايلي. ص 148. ISBN  978-0-470-14762-7.
  5. "بنية FILETIME (minwinbase.h)" . وثائق مايكروسوفت . 2 أبريل 2021.
  6. ميلز، ديفيد ل. (12 مايو 2012). "المقياس الزمني لبرنامج علم الأوبئة الوطني والثواني الكبيسة" . eecis.udel.edu . مؤرشف من الأصل في 15 مايو 2012. تم الاطلاع عليه في 21 أغسطس 2017 .
  7. "ضبط الوقت بدقة" . مصادر بيانات المنطقة الزمنية والتوقيت الصيفي . مؤرشف من الأصل في 16 أكتوبر 2017. تم الاطلاع عليه في 30 مايو 2022. يدعم رمز وبيانات المنطقة الزمنية الثواني الكبيسة عبر تكوين "صحيح" اختياري، حيث تحسب ساعة الوقت الداخلية للحاسوب كل ثانية من التوقيت الذري الدولي، على عكس تكوين "posix" الافتراضي حيث تتجاهل الساعة الداخلية الثواني الكبيسة. يتفق التكوينان بالنسبة للطوابع الزمنية التي تبدأ بـ 1972-01-01 00:00:00 UTC (time_t 63 072 000) ويختلفان بالنسبة للطوابع الزمنية التي تبدأ بـ time_t 78 796 800، والتي تتوافق مع الثانية الكبيسة الأولى 1972-06-30 23:59:60 UTC في التكوين "الصحيح"، ومع 1972-07-01 00:00:00 UTC في التكوين "posix".
  8. 1 2 "المقاييس الزمنية" . ويكي بروتوكول وقت الشبكة . 24 يوليو 2019. مؤرشف من الأصل في 12 يناير 2020. تم الاسترجاع في 12 يناير 2020 .
  9. ماركوس كون. "واجهة برمجة تطبيقات مُحدَّثة لـ ISO C" . www.cl.cam.ac.uk. مؤرشف من الأصل بتاريخ 26 سبتمبر 2020. تم الاطلاع عليه بتاريخ 31 أغسطس 2020 .
  10. RFC 9562 
  11. "timespec" . صفحات دليل NetBSD . 12 أبريل 2011. مؤرشف من الأصل في 10 أغسطس 2019. تم الاطلاع عليه في 5 يوليو 2019 .
  12. "time.h(0P)" . صفحة من دليل لينكس . مؤرشفة من الأصل بتاريخ 27 يونيو 2019. تم الاطلاع عليها بتاريخ 5 يوليو 2019 .
  13. مكارثي، د.د .؛ سيدلمان، ب.ك. (2009). الزمن - من دوران الأرض إلى الفيزياء الذرية . فاينهايم: وايلي-في سي إتش فيرلاغ جي إم بي إتش وشركاه كي جي إيه إيه. ص 232. ISBN  978-3-527-40780-4.
  14. دليل مبرمج يونكس (ملف PDF) (الطبعة الأولى ) . 3 نوفمبر 1971. مؤرشف (ملف PDF) من الأصل في 5 مارس 2022. تم الاطلاع عليه في 28 مارس 2012. تُعيد الدالة time الوقت منذ 00:00:00، 1 يناير 1971، مُقاسًا بأجزاء من ستين من الثانية. 
  15. دليل مبرمج يونكس (ملف PDF) (الطبعة الثالثة ). 15 مارس 1972. مؤرشف (ملف PDF) من الأصل في 12 فبراير 2023. تم الاطلاع عليه في 11 فبراير 2023. تُعيد الدالة time الوقت منذ 00:00:00، 1 يناير 1972، مُقاسًا بأجزاء من ستين من الثانية... يُخزَّن الوقت في 32 بت. هذا يضمن حدوث أزمة كل 2.26 سنة. 
  16. "أصبح نظام POSIX قديمًا (2016) [ ملف PDF ] | Hacker News" . news.ycombinator.com . مؤرشف من الأصل في 18 مارس 2025. تم الاطلاع عليه في 23 يوليو 2025 .
  17. "المواصفات الأساسية للمعايير الفنية لمجموعة Open Group، الإصدار 7 (طبعة 2018)" . معهد مهندسي الكهرباء والإلكترونيات (IEEE) ومجموعة Open Group. مؤرشف من الأصل في 1 مايو 2023. تم الاطلاع عليه في 1 مايو 2023 .
  18. 1 2 "time, _time32, _time64" . learn.microsoft.net . شركة مايكروسوفت. 13 فبراير 2023. مؤرشف من الأصل في 1 مايو 2023. تم الاسترجاع في 1 مايو 2023 .
  19. " مكتبة GNU C (glibc)" . نظام تشغيل GNU . مؤسسة البرمجيات الحرة. مؤرشفة من الأصل في 22 أبريل 2016. تم الاطلاع عليها في 1 مايو 2023. يوفر مشروع مكتبة GNU C المكتبات الأساسية لنظام GNU وأنظمة GNU/Linux، بالإضافة إلى العديد من الأنظمة الأخرى التي تستخدم Linux كنواة.
  20. "صفحة دليل نظام التشغيل Mac OS X لـ localtime(3)" . أرشيف وثائق Apple . شركة Apple. مؤرشف من الأصل في 22 يوليو 2022. تم الاطلاع عليه في 1 مايو 2023 .
  21. "NSDate" . وثائق مطوري Apple . شركة Apple. مؤرشف من الأصل في 1 مايو 2023. تم الاسترجاع في 1 مايو 2023 .
  22. "نظرة عامة على الوقت" . مشروع أندرويد مفتوح المصدر . شركة جوجل المحدودة. مؤرشف من الأصل في 1 مايو 2023. تم الاسترجاع في 1 مايو 2023 .
  23. "تنسيق PE - تطبيقات Win32" . learn.microsoft.com . شركة مايكروسوفت. 24 مارس 2023. مؤرشف من الأصل في 29 أبريل 2023. تم الاطلاع عليه في 1 مايو 2023 .
  24. "Instant (Java Platform SE 8)" . docs.oracle.com . أوراكل. مؤرشف من الأصل في 25 نوفمبر 2016. تم الاطلاع عليه في 1 مايو 2023 .
  25. "الوقت - الوصول إلى الوقت وتحويلاته" ، وثائق بايثون ، مؤرشفة من الأصل في 22 يوليو 2022 ، تم استرجاعها في 25 يوليو 2022
  26. "التاريخ - جافا سكريبت | MDN" . developer.mozilla.org . موزيلا. مؤرشف من الأصل في 21 يوليو 2021. تم الاطلاع عليه في 1 مايو 2023 .
  27. مرجع نظام ملفات أبل (ملف PDF) ، صفحة 57، مؤرشف (ملف PDF) من الأصل بتاريخ 5 نوفمبر 2022 ، تم استرجاعه بتاريخ 19 أكتوبر 2022. يُمثل هذا الطابع الزمني بعدد النانوثواني منذ 1 يناير 1970 الساعة 0:00 بالتوقيت العالمي المنسق، مع تجاهل الثواني الكبيسة . 
  28. "هياكل البيانات والخوارزميات" . وثائق نواة لينكس . منظمة نواة لينكس. مؤرشف من الأصل في 1 مايو 2023. تم الاطلاع عليه في 1 مايو 2023 .
  29. "تنسيق أرشيف RAR 5.0" . www.rarlab.com . win.rar GmbH. مؤرشف من الأصل في 1 مايو 2023. تم الاسترجاع في 1 مايو 2023. يتم تخزين الوقت بتنسيق Unix time_t إذا تم تعيين هذه العلامة، وبتنسيق Windows FILETIME في غير ذلك .
  30. "عائلة تنسيقات ملفات الأرشيف الشريطي (tar)" . www.loc.gov . مكتبة الكونغرس. 7 يناير 2021. مؤرشف من الأصل في 1 مايو 2023. تم الاطلاع عليه في 1 مايو 2023 .
  31. "وظائف التاريخ والوقت" ، دليل مرجعي لـ MySQL 8.0 ، مؤرشف من الأصل في 19 أكتوبر 2022 ، تم استرجاعه في 19 أكتوبر 2022
  32. "8.5. أنواع التاريخ/الوقت" . وثائق PostgreSQL . مجموعة تطوير PostgreSQL العالمية. 9 فبراير 2023. مؤرشف من الأصل في 1 مايو 2023. تم الاطلاع عليه في 1 مايو 2023 .
  33. 1 2 3 روشكيند، مارك (2004). برمجة يونكس المتقدمة ( الطبعة الثانية). أديسون-ويسلي. الصفحات 56-63 . ISBN   978-0-13-141154-8.
  34. "ما هي مشكلة عام 2038؟" . HowStuffWorks . 1 أبريل 2000. تم الاطلاع عليه بتاريخ 23 يوليو 2025 .
  35. ساكسينا، أشوتوش؛ راوات، سانجاي. "ورقة عمل IDRBT رقم 9" (ملف PDF) . مؤرشفة من الأصل (ملف PDF) في 13 مايو 2012.
  36. "بنية التاريخ والوقت (النظام)" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 14 يناير 2025 .
  37. "FILETIME (minwinbase.h) - تطبيقات Win32" . Microsoft Learn . Microsoft. 2 أبريل 2021. مؤرشف من الأصل في 10 مارس 2023. تم الاطلاع عليه في 9 مارس 2023 .
  38. "GetCurrentTicks - Azure Cosmos DB for NoSQL" . learn.microsoft.com . تم الاطلاع عليه بتاريخ 31 أغسطس 2025 .
  39. 1 2 "التواريخ الحرجة والهامة" . people.cs.nycu.edu.tw . تم الاطلاع عليه بتاريخ 12 فبراير 2024 .
  40. "التعامل مع الحسابات التي تنتهي صلاحيتها مع AAD Connect: REDUX" . www.undocumented-features.com .
  41. ثولين، أندرس (6 أبريل 2013). "تفسير الطوابع الزمنية لنظام الملفات NTFS" . فورينسيك فوكس . تم الاطلاع عليه بتاريخ 23 يوليو 2019 .
  42. "التاريخ" .
  43. "أوقات الملفات - تطبيقات Win32" . مايكروسوفت ليرن . مايكروسوفت. 7 يناير 2021. مؤرشف من الأصل في 8 مارس 2023. تم الاسترجاع في 9 مارس 2023 .
  44. "كيفية تحويل سمات التاريخ/الوقت في Active Directory إلى تنسيق الوقت القياسي" . Microsoft Learn . Microsoft. مؤرشف من الأصل في 20 أكتوبر 2022. تم الاطلاع عليه في 20 أكتوبر 2022 .
  45. دبليو. ريتشارد ستيفنز؛ بيل فينير؛ أندرو إم. رودوف (2004). برمجة شبكات يونكس . أديسون-ويسلي بروفيشنال. ص 582–. ISBN  978-0-13-141155-5أُرشف من المصدر الأصلي في 30 مارس 2019. تم الاطلاع عليه في 16 أكتوبر 2016 .
  46. "datetime — أنواع التاريخ والوقت الأساسية" . مرجع مكتبة بايثون القياسية . مؤسسة برمجيات بايثون. مؤرشف من الأصل في 19 أكتوبر 2022. تم الاسترجاع في 20 أكتوبر 2022. السمات: السنة، الشهر، اليوم، الساعة، الدقيقة، الثانية، الميكروثانية، و tzinfo.
  47. 1 2 تويني، ديلان (12 فبراير 2009). "عشاق يونكس يحتفلون كما لو كان 1234567890" . وايرد . مؤرشف من الأصل في 29 مارس 2014. تم الاسترجاع في 12 مارس 2017 .
  48. "Slashdot | التاريخ +%s بلوغ 1111111111" . 17 مارس 2005. مؤرشف من الأصل في 12 يناير 2020. تم الاسترجاع في 12 يناير 2020 .
  49. "حقائق ومعلومات طريفة عن وقت يونكس - معلومات عن وقت يونكس" . مؤرشف من الأصل بتاريخ 27 أكتوبر 2017.
  50. "نظام يونكس يقترب من بلوغه مليار مستخدم" . Electromagnetic.net. مؤرشف من الأصل بتاريخ 16 يوليو 2023. تم الاطلاع عليه بتاريخ 6 ديسمبر 2012 .
  51. نيومان، بيتر ج. (15 أكتوبر 2001). "ملخص المخاطر، المجلد 21، العدد 69" . ملخص المخاطر . 21 (69). مؤرشف من الأصل في 22 أكتوبر 2015. تم الاطلاع عليه في 6 ديسمبر 2012 .
  52. "مشاكل تقنية" . linuxmafia.com . مؤرشف من الأصل بتاريخ 11 أكتوبر 2012. تم الاطلاع عليه بتاريخ 21 أغسطس 2017 .
  53. nixCraft (9 فبراير 2009). "فكاهة: في يوم الجمعة الموافق 13 فبراير 2009، سيكون توقيت يونكس 1234567890" . Cyberciti.biz . تم الاطلاع عليه في 5 يوليو 2023 .
  54. شعار "Google 1234567890" . شركة جوجل. مؤرشف من الأصل بتاريخ 11 يناير 2013. تم الاطلاع عليه بتاريخ 28 يناير 2013 .
  55. أحمد، مراد (13 فبراير 2009). "عند الضربة الثالثة، سيصبح وقت يونكس 1234567890" . صحيفة التايمز . مؤرشف من الأصل في 14 نوفمبر 2016. تم الاطلاع عليه في 12 يناير 2020 .
  56. ماشي، جون ر. (27 ديسمبر 2004). "اللغات، والمستويات، والمكتبات، وطول العمر" . مجلة ACM Queue . 2 (9): 32-38 . doi : 10.1145/1039511.1039532 . S2CID 28911378 .