
وقت يونكس[ا] (بالإنجليزية: Unix time) هو تمثيل التاريخ والوقت المستخدم على نطاق واسع في الحوسبة. يقيس الوقت بعدد الثواني غير الكبيسة التي انقضت منذ الساعة 00:00:00 بالتوقيت العالمي المنسق في يوم 1 يناير 1970، عصر يونكس. على سبيل المثال، في منتصف ليل يوم 1 يناير 2010، كان وقت يونكس هو 1262304000.
نشأ وقت يونكس باعتباره وقت النظام لأنظمة التشغيل يونكس. لقد أصبح مستخدمًا على نطاق واسع في أنظمة تشغيل الكمبيوتر الأخرى، وأنظمة الملفات، ولغات البرمجة، وقواعد البيانات. في الحوسبة الحديثة، يتم تخزين القيم أحيانًا بحبيبات أعلى، مثل الميكروثانية أو النانوثانية.
التعريف
[عدل]يتم تعريف وقت يونكس حاليًا على أنه عدد الثواني غير الكبيسة التي مرت منذ 00:00:00 توقيت عالمي منسق يوم الخميس 1 يناير 1970، والذي يشار إليه باسم عصر يونكس.[3] يتم عادةً ترميز وقت يونكس كعدد صحيح موقّع.
وقت يونكس 0 هو منتصف الليل بالضبط بتوقيت عالمي منسق في يوم 1 يناير 1970، مع زيادة وقت يونكس بمقدار 1 لكل ثانية غير كبيسة بعد ذلك. على سبيل المثال، 00:00:00 توقيت عالمي منسق على 1 يمثل شهر يناير 1971 بتوقيت يونكس 31536000. تشير القيم السلبية، على الأنظمة التي تدعمها، إلى الأوقات التي سبقت عصر يونكس، مع انخفاض القيمة بمقدار 1 لكل ثانية غير كبيسة قبل العصر. على سبيل المثال، 00:00:00 توقيت عالمي منسق على 1 يتم تمثيل شهر يناير 1969 بتوقيت يونكس على أنه −31536000. يتكون كل يوم في وقت يونكس من 86400 ثانية بالضبط.
يُشار إلى وقت يونكس أحيانًا باسم وقت العصر. قد يكون هذا مضللًا نظرًا لأن وقت يونكس ليس نظام الوقت الوحيد الذي يعتمد على عصر معين، كما أن عصر يونكس ليس العصر الوحيد المستخدم بواسطة أنظمة الوقت الأخرى.[5]
الثواني الكبيسة
[عدل]يختلف وقت يونكس عن التوقيت العالمي المنسق والتوقيت الذري الدولي في تعامله مع الثواني الكبيسة. يتضمن التوقيت العالمي المنسق ثوانٍ كبيسة تعدل التناقض بين الوقت الدقيق، كما يتم قياسه بواسطة الساعات الذرية، والوقت الشمسي، المتعلق بموقع الأرض بالنسبة للشمس. يتجاهل التوقيت الذري الدولي، الذي يبلغ طول كل يوم فيه 86400 ثانية بالضبط، الوقت الشمسي ويفقد التزامن مع دوران الأرض تدريجيًا بمعدل ثانية واحدة تقريبًا كل عام. في وقت يونكس، يحتوي كل يوم على 86400 ثانية بالضبط. تستخدم كل ثانية كبيسة طابعًا زمنيًا للثانية التي تسبقها أو تليها مباشرة.[3]
في يوم توقيت عالمي منسق عادي، والذي تبلغ مدته 86400 ثانية، يتغير رقم وقت يونكس بطريقة مستمرة عبر منتصف الليل. على سبيل المثال، في نهاية اليوم المستخدم في الأمثلة أعلاه، تتقدم تمثيلات الوقت على النحو التالي:
تاي (17 سبتمبر 2004) | توقيت عالمي منسق (16 إلى 17 سبتمبر 2004) | وقت يونكس |
---|---|---|
2004-09-17T00:00:30.75 | 2004-09-16T23:59:58.75 | 1095379198.75 |
2004-09-17T00:00:31.00 | 2004-09-16T23:59:59.00 | 1095379199.00 |
2004-09-17T00:00:31.25 | 2004-09-16T23:59:59.25 | 1095379199.25 |
2004-09-17T00:00:31.50 | 2004-09-16T23:59:59.50 | 1095379199.50 |
2004-09-17T00:00:31.75 | 2004-09-16T23:59:59.75 | 1095379199.75 |
2004-09-17T00:00:32.00 | 2004-09-17T00:00:00.00 | 1095379200.00 |
2004-09-17T00:00:32.25 | 2004-09-17T00:00:00.25 | 1095379200.25 |
2004-09-17T00:00:32.50 | 2004-09-17T00:00:00.50 | 1095379200.50 |
2004-09-17T00:00:32.75 | 2004-09-17T00:00:00.75 | 1095379200.75 |
2004-09-17T00:00:33.00 | 2004-09-17T00:00:01.00 | 1095379201.00 |
2004-09-17T00:00:33.25 | 2004-09-17T00:00:01.25 | 1095379201.25 |
عندما تحدث ثانية كبيسة، فإن يوم توقيت عالمي منسق ليس بالضبط 86400 ثانية، ويواجه رقم وقت يونكس (الذي يزداد دائمًا بمقدار 86400 بالضبط كل يوم) انقطاعًا. قد تكون الثواني الكبيسة موجبة أو سالبة. لم يتم الإعلان عن ثانية كبيسة سلبية على الإطلاق، ولكن إذا تم الإعلان عن واحدة، ففي نهاية اليوم الذي يحتوي على ثانية كبيسة سلبية، فإن رقم وقت يونكس سيقفز بمقدار 1 إلى بداية اليوم التالي. أثناء الثانية الكبيسة الموجبة في نهاية اليوم، وهو ما يحدث كل عام ونصف تقريبًا في المتوسط، يزداد روقت يونكسقم وقت يونكس بشكل مستمر في اليوم التالي أثناء الثانية الكبيسة ثم في نهاية الثانية الكبيسة يقفز للخلف بمقدار 1 (يعود إلى بداية اليوم التالي). على سبيل المثال، هذا ما حدث في أنظمة واجهة أنظمة التشغيل المحمولة المطابقة تمامًا في نهاية عام 1998:
تاي (1 يناير 1999) | توقيت عالمي منسق (31 ديسمبر 1998 إلى 1 يناير 1999) | وقت يونكس |
---|---|---|
1999-01-01T00:00:29.75 | 1998-12-31T23:59:58.75 | 915148798.75 |
1999-01-01T00:00:30.00 | 1998-12-31T23:59:59.00 | 915148799.00 |
1999-01-01T00:00:30.25 | 1998-12-31T23:59:59.25 | 915148799.25 |
1999-01-01T00:00:30.50 | 1998-12-31T23:59:59.50 | 915148799.50 |
1999-01-01T00:00:30.75 | 1998-12-31T23:59:59.75 | 915148799.75 |
1999-01-01T00:00:31.00 | 1998-12-31T23:59:60.00 | 915148800.00 |
1999-01-01T00:00:31.25 | 1998-12-31T23:59:60.25 | 915148800.25 |
1999-01-01T00:00:31.50 | 1998-12-31T23:59:60.50 | 915148800.50 |
1999-01-01T00:00:31.75 | 1998-12-31T23:59:60.75 | 915148800.75 |
1999-01-01T00:00:32.00 | 1999-01-01T00:00:00.00 | 915148800.00 |
1999-01-01T00:00:32.25 | 1999-01-01T00:00:00.25 | 915148800.25 |
1999-01-01T00:00:32.50 | 1999-01-01T00:00:00.50 | 915148800.50 |
1999-01-01T00:00:32.75 | 1999-01-01T00:00:00.75 | 915148800.75 |
1999-01-01T00:00:33.00 | 1999-01-01T00:00:01.00 | 915148801.00 |
1999-01-01T00:00:33.25 | 1999-01-01T00:00:01.25 | 915148801.25 |
تتكرر أرقام وقت يونكس في الثانية التي تلي الثانية الكبيسة الموجبة مباشرة. وبالتالي فإن رقم وقت يونكس 1483228800 غامض: يمكن أن يشير إما إلى بداية الثانية الكبيسة (2016-12-31 23:59:60) أو نهايتها، بعد ثانية واحدة (2017-01-01 00:00:00). في الحالة النظرية عندما تحدث ثانية كبيسة سلبية، لا يحدث أي غموض، ولكن بدلاً من ذلك يوجد نطاق من أرقام وقت يونكس التي لا تشير إلى أي نقطة في توقيت عالمي منسق على الإطلاق.
غالبًا ما يتم تنفيذ ساعة يونكس باستخدام نوع مختلف من التعامل مع الثواني الكبيسة الإيجابية المرتبطة ببروتوكول وقت الشبكة (NTP). ويؤدي هذا إلى إنشاء نظام لا يتوافق مع معيار واجهة أنظمة التشغيل المحمولة. راجع القسم أدناه فيما يتعلق بـ NTP للحصول على التفاصيل.
عند التعامل مع فترات لا تشمل ثانية كبيسة بتوقيت عالمي منسق، فإن الفرق بين رقمين زمنيين في نظام يونكس يساوي مدة الفترة بين النقاط المقابلة في الوقت بالثواني. هذه تقنية حسابية شائعة. ومع ذلك، عندما تحدث الثواني الكبيسة، فإن مثل هذه الحسابات تعطي إجابة خاطئة. في التطبيقات التي تتطلب هذا المستوى من الدقة، من الضروري استشارة جدول الثواني الكبيسة عند التعامل مع أوقات يونكس، وغالبًا ما يكون من الأفضل استخدام ترميز زمني مختلف لا يعاني من هذه المشكلة.
يمكن بسهولة تحويل رقم وقت يونكس إلى توقيت عالمي منسق مرة أخرى عن طريق أخذ حاصل قسمة ومعامل رقم وقت يونكس، modulo 86400. الحاصل هو عدد الأيام منذ العصر، والمعامل هو عدد الثواني منذ منتصف الليل بتوقيت عالمي منسق في ذلك اليوم. إذا تم إعطاء رقم وقت يونكس غامض بسبب ثانية كبيسة موجبة، فإن هذه الخوارزمية تفسر هذا الرقم على أنه الوقت بعد منتصف الليل مباشرة. فهو لا يولد أبدًا وقتًا يقع خلال الثانية الكبيسة. إذا تم إعطاء رقم وقت يونكس غير صالح بسبب ثانية كبيسة سلبية، فإنه يولد توقيت عالمي منسق غير صالح أيضًا. إذا كانت هذه الظروف مهمة، فمن الضروري استشارة جدول الثواني الكبيسة لاكتشافها.
متغير قائم على بروتوكول وقت الشبكة غير المتزامن
[عدل]بشكل عام، يتم تنفيذ ساعة يونكس على غرار ميلز مع التعامل مع الثواني الكبيسة غير المتزامنة مع تغيير رقم وقت يونكس. يبدأ رقم الوقت في البداية بالتناقص في المكان الذي كان من المفترض أن تحدث فيه القفزة، ثم يقفز إلى الوقت الصحيح بعد ثانية واحدة من القفزة. وهذا يجعل التنفيذ أسهل، وهو ما وصفه بحث ميلز.[6] وهذا ما يحدث عبر ثانية كبيسة موجبة:
تاي (1 يناير 1999) | التوقيت العالمي المنسق (31 ديسمبر 1998 إلى 1 يناير 1999) | الحالة | ساعة يونكس |
---|---|---|---|
1999-01-01T00:00:29.75 | 1998-12-31T23:59:58.75 | TIME_INS | 915148798.75 |
1999-01-01T00:00:30.00 | 1998-12-31T23:59:59.00 | TIME_INS | 915148799.00 |
1999-01-01T00:00:30.25 | 1998-12-31T23:59:59.25 | TIME_INS | 915148799.25 |
1999-01-01T00:00:30.50 | 1998-12-31T23:59:59.50 | TIME_INS | 915148799.50 |
1999-01-01T00:00:30.75 | 1998-12-31T23:59:59.75 | TIME_INS | 915148799.75 |
1999-01-01T00:00:31.00 | 1998-12-31T23:59:60.00 | TIME_INS | 915148800.00 |
1999-01-01T00:00:31.25 | 1998-12-31T23:59:60.25 | TIME_OOP | 915148799.25 |
1999-01-01T00:00:31.50 | 1998-12-31T23:59:60.50 | TIME_OOP | 915148799.50 |
1999-01-01T00:00:31.75 | 1998-12-31T23:59:60.75 | TIME_OOP | 915148799.75 |
1999-01-01T00:00:32.00 | 1999-01-01T00:00:00.00 | TIME_OOP | 915148800.00 |
1999-01-01T00:00:32.25 | 1999-01-01T00:00:00.25 | TIME_WAIT | 915148800.25 |
1999-01-01T00:00:32.50 | 1999-01-01T00:00:00.50 | TIME_WAIT | 915148800.50 |
1999-01-01T00:00:32.75 | 1999-01-01T00:00:00.75 | TIME_WAIT | 915148800.75 |
1999-01-01T00:00:33.00 | 1999-01-01T00:00:01.00 | TIME_WAIT | 915148801.00 |
1999-01-01T00:00:33.25 | 1999-01-01T00:00:01.25 | TIME_WAIT | 915148801.25 |
يمكن فك تشفير هذا بشكل صحيح من خلال الانتباه إلى متغير حالة الثانية الكبيسة، والذي يُشير بوضوح إلى ما إذا كانت القفزة قد أُجريت بالفعل. يتزامن تغيير متغير الحالة مع القفزة.
يحدث موقف مشابه مع ثانية كبيسة سالبة، حيث تكون الثانية المُتخطاة متأخرة قليلاً. يُظهر النظام، باختصار شديد، رقمًا زمنيًا مستحيلًا ظاهريًا، ولكن يُمكن اكتشافه من خلال حالة حذف الوقت (TIME_DEL) وتصحيحه.
في هذا النوع من الأنظمة، يُخالف رقم وقت يونكس معيار واجهة أنظمة التشغيل المحمولة في كلا نوعي الثانية الكبيسة. يسمح جمع متغير حالة الثانية الكبيسة مع رقم الوقت بفك تشفير واضح، ما يُتيح توليد رقم وقت واجهة أنظمة التشغيل المحمولة الصحيح عند الرغبة، أو تخزين توقيت عالمي منسق الكامل بتنسيق أكثر ملاءمة.
إن منطق فك التشفير المطلوب للتعامل مع هذا النمط من ساعات يونكس سيتمكن أيضًا من فك تشفير ساعة افتراضية متوافقة مع معايير واجهة أنظمة التشغيل المحمولة بشكل صحيح باستخدام الواجهة نفسها. يتحقق ذلك من خلال الإشارة إلى حالة TIME_INS طوال الثانية الكبيسة المُضافة، ثم الإشارة إلى حالة TIME_WAIT طوال الثانية التالية مع تكرار عدّ الثواني. يتطلب هذا معالجة متزامنة للثواني الكبيسة. ربما تكون هذه أفضل طريقة للتعبير عن وقت التوقيت العالمي المنسق بصيغة ساعة يونكس، عبر واجهة يونكس، عندما تكون الساعة الأساسية خالية تمامًا من الثواني الكبيسة.
متغير يحسب الثواني الكبيسة
[عدل]تتضمن متغيرات أخرى غير متوافقة وأكثر ندرة في نظام يونكس لقياس الوقت زيادة القيمة لجميع الثواني، بما في ذلك الثواني الكبيسة؛[7] يتم تكوين بعض أنظمة لينكس بهذه الطريقة.[8] يُشار أحيانًا إلى الوقت المحفوظ بهذه الطريقة باسم «التوقيت الذري العالمي» (على الرغم من أنه يمكن تحويل الطوابع الزمنية إلى توقيت عالمي منسق إذا كانت القيمة تتوافق مع وقت يكون فيه الفرق بين TAI وتوقيت عالمي منسق معروفًا)، على عكس «التوقيت العالمي المنسق» (على الرغم من أن ليس كل قيم توقيت عالمي منسق لها مرجع فريد في الأنظمة التي لا تحسب الثواني الكبيسة).[8]
لأن TAI لا يحتوي على ثوانٍ كبيسة، وطول كل يوم في TAI هو 86400 ثانية بالضبط، فإن هذا الترميز هو في الواقع عدّ خطي للثواني المنقضية منذ 1970-01-01T00:00:10 TAI. هذا يُسهّل حساب الفواصل الزمنية بشكل كبير. قيم الوقت من هذه الأنظمة لا تعاني من الغموض الذي تعاني منه أنظمة واجهة أنظمة التشغيل المحمولة المتوافقة تمامًا أو الأنظمة التي تعمل بنظام NTP.
في هذه الأنظمة، من الضروري استشارة جدول الثواني الكبيسة للتحويل بشكل صحيح بين توقيت عالمي منسق وتمثيل وقت يونكس الزائف. يشبه هذا الطريقة التي يجب بها استشارة جداول المنطقة الزمنية للتحويل من وإلى الوقت المدني ؛ تتضمن قاعدة بيانات المنطقة الزمنية IANA معلومات الثانية الكبيسة، ويستخدم كود العينة المتاح من نفس المصدر هذه المعلومات للتحويل بين الطوابع الزمنية المستندة إلى TAI والوقت المحلي. ويواجه التحويل أيضًا مشاكل تعريفية قبل بدء العمل بالشكل الحالي للتوقيت العالمي المنسق في عام 1972 (انظر قسم أساس التوقيت العالمي المنسق أدناه).
هذا النظام، على الرغم من تشابهه الظاهري، ليس زمن يونكس. يقوم بترميز الأوقات بقيم تختلف بعدة ثوانٍ عن قيم وقت واجهة أنظمة التشغيل المحمولة. نسخة من هذا النظام، حيث كان العصر 1970-01-01T00:00:00 TAI بدلاً من 1970-01-01T00:00:10 تم اقتراح تضمين TAI في time.h
الخاص بإيزو سي، ولكن تم قبول جزء توقيت عالمي منسق فقط في عام 2011.[9] ومع ذلك، توجد tai_clock
في سي++20.
تمثيل الرقم
[عدل]يمكن تمثيل رقم يونكس الزمني بأي شكل قادر على تمثيل الأرقام. في بعض التطبيقات، يُمثَّل الرقم نصيًا كسلسلة من الأرقام العشرية، مما يُثير مشاكل إضافية بسيطة. مع ذلك، تُعد بعض التمثيلات الثنائية لأرقام يونكس زمنية ذات أهمية خاصة.
نوع بيانات يونكس time_t
الذي يمثل نقطة في الوقت هو، على العديد من المنصات، عدد صحيح موقّع، تقليديًا يتكون من 32 بتات (ولكن انظر أدناه)، تقوم بتشفير رقم وقت يونكس بشكل مباشر كما هو موضح في القسم السابق. تغطي القيمة الموقعة المكونة من 32 بت ما يقرب من 68 عامًا قبل وبعد عصر 1970-01-01. الحد الأدنى للتاريخ القابل للتمثيل هو الجمعة 1901-12-13، والحد الأقصى للتاريخ القابل للتمثيل هو الثلاثاء 2038-01-19. بعد ثانية واحدة من 2038-01-19T03:14:07Z سوف يفيض هذا التمثيل في ما يعرف بمشكلة عام 2038.
يقوم المعرف الفريد العالمي 7 بتشفير الطابع الزمني لعصر يونكس (بالمللي ثانية) في حقل غير موقّع مكون من 48 بت. هذا التمثيل صالح حتى عام 10889 م.[10]
في بعض أنظمة التشغيل الأحدث، تم توسيع time_t
إلى 64 بت. يؤدي هذا إلى توسيع الأوقات القابلة للتمثيل إلى حوالي 292.3 مليار سنة في كلا الاتجاهين، وهو ما يزيد عن عشرين ضعف عمر الكون الحالي.
كان هناك في الأصل بعض الجدل حول ما إذا كان يجب توقيع يونكس time_t
أم لا. إذا لم يتم توقيعه، فسيتم مضاعفة نطاقه في المستقبل، مما يؤدي إلى تأجيل تجاوز 32 بت (بمقدار 68 عامًا). ومع ذلك، فإنه لن يكون قادرا على تمثيل الأوقات السابقة لهذا العصر. الإجماع هو أن يتم توقيع time_t
، وهذه هي الممارسة المعتادة. تحتوي منصة تطوير البرامج لإصدار 6 من نظام التشغيل كيو إن إكس على time_t
غير موقّع 32 بت، على الرغم من أن الإصدارات الأقدم استخدمت نوعًا موقّعًا.
تتضمن مواصفات واجهة أنظمة التشغيل المحمولة والمجموعة المفتوحة يونكس مكتبة سي القياسية، والتي تتضمن أنواع الوقت والوظائف المحددة في ملف الرأس < time.h >
. تنص معايير إيزو سي على أن time_t
يجب أن يكون نوعًا حسابيًا، لكنها لا تفرض أي نوع أو ترميز محدد له. يتطلب نظام واجهة أنظمة التشغيل المحمولة أن يكون time_t
نوع عدد صحيح، لكنه لا يفرض أن يكون موقّعًا أو غير موقّع.
لا يوجد لدى يونكس تقليد لتمثيل أرقام وقت يونكس غير الصحيحة بشكل مباشر على شكل كسور ثنائية. بدلاً من ذلك، يتم تمثيل الأوقات ذات الدقة الفرعية من الثانية باستخدام أنواع البيانات المركبة التي تتكون من عددين صحيحين، الأول هو time_t
(الجزء المتكامل من وقت يونكس)، والثاني هو الجزء الكسري من رقم الوقت بالمليون (في struct timeval
) أو المليارات (في struct timespec
).[11][12] توفر هذه الهياكل تنسيق بيانات ثابت يعتمد على النظام العشري، وهو مفيد لبعض التطبيقات، وسهل التحويل لتطبيقات أخرى.
قاعدة التوقيت العالمي المنسق
[عدل]الشكل الحالي للتوقيت العالمي المنسق، مع الثواني الكبيسة، يتم تعريفه فقط بدءًا من 1 يناير 1972. قبل ذلك، منذ عام 1 في يناير 1961 كان هناك شكل أقدم من التوقيت العالمي المنسق، والذي لم يتضمن فقط خطوات زمنية عرضية، والتي كانت بأعداد غير صحيحة من الثواني، ولكن أيضًا كانت ثانية التوقيت العالمي المنسق أطول قليلاً من ثانية النظام الدولي للوحدات، وكانت تتغير بشكل دوري لتقريب دوران الأرض باستمرار. قبل عام 1961 لم يكن هناك توقيت عالمي منسق، وقبل عام 1958 لم يكن هناك قياس واسع النطاق للوقت الذري ؛ في هذه العصور، تم استخدام تقريبات توقيت جرينتش (بناءً على دوران الأرض مباشرة) بدلاً من مقياس الوقت الذري.[بحاجة لمصدر]
إن التعريف الدقيق لتوقيت يونكس كترميز للتوقيت العالمي المنسق لا يثير الجدل إلا عند تطبيقه على الشكل الحالي منه. ولا يؤثر تاريخ يونكس السابق لبداية هذا الشكل من التوقيت العالمي المنسق على استخدامه في هذا العصر: فعدد الأيام من 1 يناير 1970 (عصر يونكس) إلى 1 يناير 1972 (بداية التوقيت العالمي المنسق) ليس محل شك، وعدد الأيام هو كل ما يهم في توقيت يونكس.
إن معنى قيم وقت يونكس التي تقل عن +63 072 000 (أي قبل 1 يناير 1972) غير محدد بدقة. ويُفهم أن أساس أوقات يونكس هذه هو تقريب غير محدد للتوقيت العالمي المنسق. نادرًا ما كانت أجهزة الكمبيوتر في تلك الحقبة مزودة بساعات دقيقة بما يكفي لتوفير طوابع زمنية دقيقة بأجزاء من الثانية. لا يُعد وقت يونكس طريقة مناسبة لتمثيل الأوقات قبل عام 1972 في التطبيقات التي تتطلب دقة بأجزاء من الثانية؛ ويجب على هذه التطبيقات، على الأقل، تحديد شكل التوقيت العالمي المنسق أو توقيت غرينتش الذي تستخدمه.
اعتبارًا من عام 2009، يتم النظر في إمكانية إنهاء استخدام الثواني الكبيسة في التوقيت المدني.[13] إحدى الوسائل المحتملة لتنفيذ هذا التغيير هي تحديد مقياس زمني جديد، يسمى التوقيت الدولي،[بحاجة لمصدر] والذي يتطابق في البداية مع التوقيت العالمي المنسق ولكن بعد ذلك لا يحتوي على ثوانٍ كبيسة، وبالتالي يبقى عند إزاحة ثابتة عن التوقيت الدولي القياسي. إذا حدث هذا، فمن المحتمل أن يتم تعريف وقت يونكس مستقبليًا من حيث هذا المقياس الزمني الجديد، بدلاً من التوقيت العالمي المنسق. إن عدم اليقين بشأن ما إذا كان هذا سيحدث يجعل وقت يونكس المستقبلي لا يقل قابلية للتنبؤ عما هو عليه بالفعل: إذا لم يكن للتوقيت العالمي المنسق أي ثوانٍ كبيسة أخرى، فستكون النتيجة هي نفسها.
التاريخ
[عدل]كانت الإصدارات الأولى من نظام يونكس تحتوي على عدد صحيح مكون من 32 بت يتزايد بمعدل 60 هرتز، وهو معدل ساعة النظام على الأجهزة في أنظمة يونكس المبكرة. لا يمكن للطوابع الزمنية المخزنة بهذه الطريقة أن تمثل سوى نطاق يزيد قليلاً عن عامين وربع العام. تم تغيير العصر الذي يتم العد منه مع إصدارات يونكس لمنع التدفق الزائد، مع منتصف الليل في 1 يناير 1971 و 1 يناير 1972 تم استخدامهما كعصرين خلال التطوير المبكر لنظام يونكس. كانت التعريفات المبكرة لوقت يونكس تفتقر أيضًا إلى المناطق الزمنية.[14][15]
تم اختيار التاريخ الحالي، 1 يناير 1970، الساعة 00:00:00 بالتوقيت العالمي المنسق، بشكل تعسفي من قِبل مهندسي يونكس لأنه كان يُعتبر تاريخًا مناسبًا للعمل. تم تغيير الدقة إلى الثواني لتجنب تجاوز الحد الأقصى للوقت.[1]
عندما تمت كتابة واجهة أنظمة التشغيل المحمولة، نشأ السؤال حول كيفية تعريف time_t
بدقة في مواجهة الثواني الكبيسة. نظرت لجنة واجهة أنظمة التشغيل المحمولة في ما إذا كان ينبغي أن يظل وقت يونكس، كما هو مقصود، عبارة عن عدد خطي من الثواني منذ العصر، على حساب التعقيد في التحويلات باستخدام الوقت المدني أو تمثيل الوقت المدني، على حساب التناقض حول الثواني الكبيسة. لم تكن ساعات الكمبيوتر في ذلك العصر مضبوطة بدقة كافية لتشكل سابقة في اتجاه أو آخر.
لقد تأثرت لجنة واجهة أنظمة التشغيل المحمولة بالحجج ضد التعقيد في وظائف المكتبة،[بحاجة لمصدر] وقام بتحديد وقت يونكس بشكل ثابت بطريقة بسيطة من حيث عناصر توقيت عالمي منسق. كان هذا التعريف بسيطًا للغاية حتى أنه لم يشمل قاعدة السنة الكبيسة في التقويم الغريغوري بالكامل، مما يجعل عام 2100 سنة كبيسة.
لقد قام إصدار 2001 من واجهة أنظمة التشغيل المحمولة بتصحيح قاعدة السنة الكبيسة الخاطئة في تعريف وقت يونكس، لكنه احتفظ بالتعريف الأساسي لوقت يونكس باعتباره ترميزًا لتوقيت توقيت عالمي منسق وليس مقياسًا زمنيًا خطيًا. منذ منتصف تسعينيات القرن العشرين، تم ضبط ساعات الكمبيوتر بشكل روتيني بدقة كافية ليكون لهذا الأمر أهمية، وكانت يتم ضبطها في أغلب الأحيان باستخدام تعريف التوقيت العالمي المنسق لوقت يونكس. وقد أدى هذا إلى تعقيد كبير في تنفيذات يونكس، وفي بروتوكول وقت الشبكة، لتنفيذ الخطوات في رقم وقت يونكس كلما حدثت ثوانٍ كبيسة.[بحاجة لمصدر]
الاستخدام
[عدل]يتم اعتماد وقت يونكس على نطاق واسع في الحوسبة بما يتجاوز تطبيقه الأصلي كوقت النظام ليونكس. يتوفر وقت يونكس في جميع واجهات برمجة التطبيقات البرمجية للنظام تقريبًا، بما في ذلك تلك التي توفرها أنظمة التشغيل المستندة إلى يونكس وغير المستندة إلى يونكس. توفر جميع لغات البرمجة الحديثة تقريبًا واجهات برمجة التطبيقات للعمل مع وقت يونكس أو تحويلها إلى بنية بيانات أخرى. يتم استخدام وقت يونكس أيضًا كآلية لتخزين الطوابع الزمنية في عدد من أنظمة الملفات وتنسيقات الملفات وقواعد البيانات.
تستخدم مكتبة سي القياسية وقت يونكس لجميع وظائف التاريخ والوقت، ويشار إلى وقت يونكس أحيانًا باسم time_t، وهو اسم نوع البيانات المستخدم للطوابع الزمنية في سي وسي++. يتم تعريف وظائف وقت يونكس في لغة سي باعتبارها واجهة برمجة تطبيقات وقت النظام في مواصفات واجهة أنظمة التشغيل المحمولة.[16] تُستخدم مكتبة سي القياسية على نطاق واسع في جميع أنظمة تشغيل سطح المكتب الحديثة، بما في ذلك مايكروسوفت ويندوز وأنظمة شبيهة بيونكس مثل ماك أو إس ولينكس، حيث تعد واجهة برمجة قياسية.[17][18][19]
يوفر نظام التشغيل iOS واجهة برمجة تطبيقات سويفت والتي تستخدم افتراضيًا عصرًا واحدًا يناير 2001 ولكن يمكن استخدامه أيضًا مع الطوابع الزمنية الخاصة بيونكس.[20] يستخدم أندرويد وقت يونكس إلى جانب المنطقة الزمنية لواجهة برمجة تطبيقات وقت النظام الخاصة به.[21]
لا يستخدم Windows وقت يونكس لتخزين الوقت داخليًا ولكنه يستخدمه في واجهات برمجة التطبيقات للنظام، والتي يتم توفيرها في سي++ وتنفذ مواصفات مكتبة سي القياسية.[17] يتم استخدام وقت يونكس في تنسيق بي إس للملفات القابلة للتنفيذ في نظام التشغيل Windows.[22]
يتوفر وقت يونكس عادةً في لغات البرمجة الرئيسية ويُستخدم على نطاق واسع في برمجة تطبيقات سطح المكتب والهواتف المحمولة والويب. توفر جافا كائنًا فوريًا يحمل طابعًا زمنيًا لنظام يونكس بالثواني والنانوثانية.[23] يوفر بايثون مكتبة وقت تستخدم وقت يونكس.[24] توفر جافا سكريبت مكتبة تاريخ توفر وتخزن الطوابع الزمنية بالمللي ثانية منذ عصر يونكس ويتم تنفيذها في جميع متصفحات الويب الحديثة لأجهزة الكمبيوتر المكتبية والمحمولة بالإضافة إلى بيئات خادم جافا سكريبت مثل نود.جي إس[25]
ينفذ فري باسكال وقت يونكس باستخدام الوظيفتين (بالإنجليزية: GetTickCount) (32 بت غير موقعة) و(بالإنجليزية: GetTickCount64) (64 بت غير موقعة) بدقة 1 مللي ثانية على منصات شبيهة بيونكس.
تميل أنظمة الملفات المصممة للاستخدام مع أنظمة التشغيل المستندة إلى يونكس إلى استخدام وقت يونكس. يستخدم كل من نظام ملفات أبل [الإنجليزية]، المستخدم افتراضيًا عبر جميع أجهزة أبل، ونظام الملفات إكس تي 4، المستخدم على نطاق واسع على أجهزة لينكس وأندرويد، وقت يونكس بالنانوثانية لطوابع زمنية للملفات.[26][27] يمكن للعديد من تنسيقات ملفات الأرشيف تخزين الطوابع الزمنية في وقت يونكس، بما في ذلك رار وتار.[28][29] يُستخدم وقت يونكس أيضًا بشكل شائع لتخزين الطوابع الزمنية في قواعد البيانات، بما في ذلك ماي إس كيو إل وبوستجري إس كيو إل.[30][31]
القيود
[عدل]صُمم وقت يونكس لترميز تواريخ وأوقات التقويم بطريقة مُختصرة، مُصممة للاستخدام الداخلي لأجهزة الكمبيوتر. ليس من المُصمم أن يُقرأ بسهولة من قِبَل البشر أو لتخزين قيم مُرتبطة بالمنطقة الزمنية. كما أنه مُقيد افتراضيًا بتمثيل الوقت بالثواني، مما يجعله غير مُناسب للاستخدام عند الحاجة إلى قياس دقيق للوقت، مثل قياس وقت تنفيذ البرامج.[32]
مجموعة من الأوقات القابلة للتمثيل
[عدل]
لا يتطلب وقت يونكس حسب التصميم حجمًا محددًا للتخزين، ولكن معظم التنفيذات الشائعة لوقت يونكس تستخدم عددًا صحيحًا موقّعًا بنفس حجم حجم كلمة الأجهزة الأساسية. نظرًا لأن غالبية أجهزة الكمبيوتر الحديثة هي 32 بت أو 64 بت، ولا يزال عدد كبير من البرامج مكتوبًا في وضع التوافق 32 بت، فهذا يعني أن العديد من البرامج التي تستخدم وقت يونكس تستخدم حقول عدد صحيح موقعة 32 بت. القيمة القصوى لعدد صحيح مكون من 32 بت هي 231 − 1، والقيمة الدنيا هي −231، مما يجعل من المستحيل تمثيل التواريخ قبل 13 ديسمبر 1901 (في الساعة 20:45:52 بالتوقيت العالمي المنسق) أو بعد 19 يناير 2038 (في الساعة 03:14:07 بالتوقيت العالمي المنسق). يمكن أن يكون للقطع المبكر تأثير على قواعد البيانات التي تخزن المعلومات التاريخية؛ في بعض قواعد البيانات حيث يتم استخدام وقت يونكس 32 بت للطوابع الزمنية، قد يكون من الضروري تخزين الوقت في شكل مختلف من الحقول، مثل سلسلة، لتمثيل التواريخ قبل عام 1901. تُعرف عملية القطع المتأخرة باسم مشكلة عام 2038 ولديها القدرة على التسبب في مشكلات مع اقتراب التاريخ، حيث ستعود التواريخ التي تقع بعد عملية القطع لعام 2038 إلى بداية النطاق القابل للتمثيل في عام 1901.[32]
لا تشكل حدود نطاق التاريخ مشكلة مع التمثيلات المكونة من 64 بت لوقت يونكس، حيث أن النطاق الفعال للتواريخ التي يمكن تمثيلها باستخدام وقت يونكس المخزن في عدد صحيح مكون من 64 بت يزيد عن 584 مليار سنة، أو 292 مليار سنة في أي اتجاه من عصر 1970.[32][33]
البدائل
[عدل]وقت يونكس ليس هو المعيار الوحيد للوقت الذي يتم احتسابه بعيدًا عن العصر. في نظام التشغيل Windows، يخزن نوع FILETIME
الوقت كعدد من الفواصل الزمنية التي تبلغ 100 نانوثانية والتي انقضت منذ الساعة 0:00 بتوقيت جرينتش في يوم 1 يناير 1601.[34] يتم استخدام وقت عصر Windows لتخزين الطوابع الزمنية للملفات[35] وفي البروتوكولات مثل خدمة وقت أكتيف ديريكتوري[36] وكتلة رسالة الخادم .
يستخدم بروتوكول وقت الشبكة المستخدم لتنسيق الوقت بين أجهزة الكمبيوتر حقبة زمنية قدرها 1 يناير 1900، تم حسابه في عدد صحيح غير موقّع مكون من 32 بت للثواني وعدد صحيح غير موقّع آخر مكون من 32 بت للثواني الكسرية، والذي يتكرر كل 2 32 ثانية (مرة واحدة كل 136 عامًا تقريبًا).[37]
توفر العديد من التطبيقات ولغات البرمجة طرقًا لتخزين الوقت باستخدام منطقة زمنية محددة.[38] هناك أيضًا عدد من معايير تنسيق الوقت التي تم إنشاؤها لتكون قابلة للقراءة من قبل البشر وأجهزة الكمبيوتر، مثل إيزو 8601.
الأحداث البارزة في وقت يونكس
[عدل]لدى عشاق يونكس تاريخ في إقامة (بالإنجليزية: time_t parties) (تُنطق «حفلات شاي الوقت») للاحتفال بالقيم المهمة لرقم وقت يونكس.[39][40] وهذه تشبه بشكل مباشر احتفالات رأس السنة الجديدة التي تحدث عند تغيير العام في العديد من التقويمات. مع انتشار استخدام وقت يونكس، انتشرت أيضًا ممارسة الاحتفال بإنجازاته. عادةً ما يتم الاحتفال بقيم الوقت التي تكون عبارة عن أرقام تقريبية في النظام العشري، وفقًا لاتفاقية يونكس لعرض قيم time_t
في النظام العشري. ومن بين بعض المجموعات يتم الاحتفال أيضًا بالأرقام الثنائية المستديرة،[بحاجة لمصدر] مثل +2 30، الذي حدث في الساعة 13:37:04 بالتوقيت العالمي المنسق يوم السبت، 10 يناير 2004.
يتم وصف الأحداث التي يحتفل بها هؤلاء عادةً بأنها «إن ثانية منذ عصر يونكس»، ولكن هذا غير دقيق؛ كما تمت مناقشته أعلاه، بسبب التعامل مع الثواني الكبيسة في وقت يونكس فإن عدد الثواني المنقضية منذ عصر يونكس أكبر قليلاً من رقم وقت يونكس للأوقات اللاحقة للعصر.
- في الساعة 18:36:57 بتوقيت عالمي منسق يوم الأربعاء 17 في أكتوبر 1973، حدث أول ظهور للتاريخ بتنسيق أيزو 8601[ب](1973-10-17) ضمن أرقام وقت يونكس (119731017).
- في الساعة 01:46:40 بالتوقيت العالمي المنسق يوم الأحد 9 في سبتمبر 2001، تم الاحتفال بمليارية يونكس (رقم وقت يونكس 1000000000).[41] اسم المليار هو عبارة عن كلمة مليار وألفية.[42][43] واجهت بعض البرامج التي تخزن الطوابع الزمنية باستخدام تمثيل نصي أخطاء في الفرز، كما هو الحال في فرز النص، حيث تم فرز الأوقات بعد الدورة التي تبدأ برقم واحد بشكل خاطئ قبل الأوقات السابقة التي تبدأ برقم 9. وشملت البرامج المتأثرة قارئ يوزنت الشهير متراسلك وعميل البريد الإلكتروني متراسلك، وهو جزء من بيئة سطح مكتب كيدي. كانت مثل هذه الأخطاء تجميلية في طبيعتها بشكل عام، وتم إصلاحها بسرعة بمجرد ظهور المشاكل.[بحاجة لمصدر] أثرت المشكلة أيضًا على العديد من مرشحات تنسيق المستندات فيلتركس المتوفرة مع إصدارات لينكس من ووردبيرفكت ؛ وقد تم إنشاء تصحيح بواسطة مجتمع المستخدمين لحل هذه المشكلة، حيث لم تعد شركة كوريل تبيع أو تدعم هذا الإصدار من البرنامج.[44]
- في الساعة 23:31:30 بالتوقيت العالمي المنسق يوم الجمعة 13 في فبراير 2009، وصل التمثيل العشري لوقت يونكس 1234567890.[45] احتفلت جوجل بهذا من خلال رسم جوجل دودل.[46] أقيمت الحفلات والاحتفالات الأخرى في جميع أنحاء العالم، بين مختلف الثقافات الفرعية التقنية، للاحتفال بالثانية 1234567890[39][47]
في الثقافة الشعبية
[عدل]رواية «عمق في السماء» للكاتب فيرنور فينج تصف حضارة تجارية فضائية بعد آلاف السنين في المستقبل والتي لا تزال تستخدم عصر يونكس. يعتقد «مبرمج الآثار» المسؤول عن العثور على الكود القابل للاستخدام وصيانته في أنظمة الكمبيوتر الناضجة في البداية أن العصر يشير إلى الوقت الذي مشى فيه الإنسان لأول مرة على القمر، لكنه يدرك بعد ذلك أنه «الثانية 0 من أحد أنظمة تشغيل الكمبيوتر الأولى للبشرية».[48]
الملاحظات
[عدل]المراجع
[عدل]- ^ ا ب Farhad, Manjoo (8 Sep 2001). "Unix Tick Tocks to a Billion". Wired (بالإنجليزية الأمريكية). ISSN:1059-1028. Archived from the original on 2022-09-11. Retrieved 2022-10-16.
- ^ "The Open Group Base Specifications Issue 7, Rationale: Base Definitions, section A.4 General Concepts". المجموعة المفتوحة. مؤرشف من الأصل في 2017-11-15. اطلع عليه بتاريخ 2019-09-09.
- ^ ا ب ج "The Open Group Base Specifications Issue 7, section 4.16 Seconds Since the Epoch". المجموعة المفتوحة. مؤرشف من الأصل في 2017-12-22. اطلع عليه بتاريخ 2017-01-22.
- ^ Matthew، Neil؛ Stones، Richard (2008). "The Linux Environment". Beginning Linux Programming. Indianapolis, Indiana, US: Wiley. ص. 148. ISBN:978-0-470-14762-7.
- ^ "FILETIME structure (minwinbase.h)". Microsoft Docs. 2 أبريل 2021.
- ^ Mills، David L. (12 مايو 2012). "The NTP Timescale and Leap Seconds". eecis.udel.edu. مؤرشف من الأصل في 2012-05-15. اطلع عليه بتاريخ 2017-08-21.
- ^ "Precision timekeeping". Sources for time zone and daylight saving time data. مؤرشف من الأصل في 2017-10-16. اطلع عليه بتاريخ 2022-05-30.
The tz code and data support leap seconds via an optional "right" configuration where a computer's internal time_t integer clock counts every TAI second, as opposed to the default "posix" configuration where the internal clock ignores leap seconds. The two configurations agree for timestamps starting with 1972-01-01 00:00:00 UTC (time_t 63 072 000) and diverge for timestamps starting with time_t 78 796 800, which corresponds to the first leap second 1972-06-30 23:59:60 UTC in the "right" configuration, and to 1972-07-01 00:00:00 UTC in the "posix" configuration.
- ^ ا ب "Time Scales". Network Time Protocol Wiki. 24 يوليو 2019. مؤرشف من الأصل في 2020-01-12. اطلع عليه بتاريخ 2020-01-12.
- ^ Markus Kuhn. "Modernized API for ISO C". www.cl.cam.ac.uk. مؤرشف من الأصل في 2020-09-26. اطلع عليه بتاريخ 2020-08-31.
- ^ RFC 9562
- ^ "timespec". NetBSD Manual Pages. 12 أبريل 2011. مؤرشف من الأصل في 2019-08-10. اطلع عليه بتاريخ 2019-07-05.
- ^ "time.h(0P)". Linux manual page. مؤرشف من الأصل في 2019-06-27. اطلع عليه بتاريخ 2019-07-05.
- ^ McCarthy، D. D.؛ Seidelmann، P. K. (2009). TIME—From Earth Rotation to Atomic Physics. Weinheim: Wiley–VCH Verlag GmbH & Co. KGaA. ص. 232. ISBN:978-3-527-40780-4.
- ^ Unix Programmer's Manual (PDF) (ط. 1st). 3 نوفمبر 1971. مؤرشف (PDF) من الأصل في 2022-03-05. اطلع عليه بتاريخ 2012-03-28.
time returns the time since 00:00:00, Jan. 1, 1971, measured in sixtieths of a second.
- ^ Unix Programmer's Manual (PDF) (ط. 3rd). 15 مارس 1972. مؤرشف (PDF) من الأصل في 2023-02-12. اطلع عليه بتاريخ 2023-02-11.
time returns the time since 00:00:00, Jan. 1, 1972, measured in sixtieths of a second...The time is stored in 32 bits. This guarantees a crisis every 2.26 years.
- ^ "The Open Group Technical Standard Base Specifications Issue 7 (2018 edition)". IEEE and The Open Group. مؤرشف من الأصل في 2023-05-01. اطلع عليه بتاريخ 2023-05-01.
- ^ ا ب "time, _time32, _time64". learn.microsoft.net. Microsoft Corporation. 13 فبراير 2023. مؤرشف من الأصل في 2023-05-01. اطلع عليه بتاريخ 2023-05-01.
- ^ "The GNU C Library (glibc)". The GNU Operating Sisyem. Free Software Foundation. مؤرشف من الأصل في 2016-04-22. اطلع عليه بتاريخ 2023-05-01.
The GNU C Library project provides the core libraries for the GNU system and GNU/Linux systems, as well as many other systems that use Linux as the kernel.
- ^ "Mac OS X Manual Page for localtime(3)". Apple Documentation Archive. Apple Inc. مؤرشف من الأصل في 2022-07-22. اطلع عليه بتاريخ 2023-05-01.
- ^ "NSDate". Apple Developer Documentation. Apple Inc. مؤرشف من الأصل في 2023-05-01. اطلع عليه بتاريخ 2023-05-01.
- ^ "Time Overview". Android Open Source Project. Google LLC. مؤرشف من الأصل في 2023-05-01. اطلع عليه بتاريخ 2023-05-01.
- ^ "PE Format - Win32 apps". learn.microsoft.com (بالإنجليزية الأمريكية). Microsoft Corporation. 24 Mar 2023. Archived from the original on 2023-04-29. Retrieved 2023-05-01.
- ^ "Instant (Java Platform SE 8 )". docs.oracle.com. Oracle. مؤرشف من الأصل في 2016-11-25. اطلع عليه بتاريخ 2023-05-01.
- ^ "time — Time access and conversions"، Python documentation، مؤرشف من الأصل في 2022-07-22، اطلع عليه بتاريخ 2022-07-25
- ^ "Date - JavaScript | MDN". developer.mozilla.org. Mozilla. مؤرشف من الأصل في 2021-07-21. اطلع عليه بتاريخ 2023-05-01.
- ^ Apple File System Reference (PDF)، ص. 57، مؤرشف (PDF) من الأصل في 2022-11-05، اطلع عليه بتاريخ 2022-10-19،
This timestamp is represented as the number of nanoseconds since January 1, 1970 at 0:00 UTC, disregarding leap seconds
- ^ "Data Structures and Algorithms". The Linux Kernel documentation. Linux Kernel Organization, Inc. مؤرشف من الأصل في 2023-05-01. اطلع عليه بتاريخ 2023-05-01.
- ^ "RAR 5.0 archive format". www.rarlab.com. win.rar GmbH. مؤرشف من الأصل في 2023-05-01. اطلع عليه بتاريخ 2023-05-01.
Time is stored in Unix time_t format if this flags [sic] is set and in Windows FILETIME format otherwise
- ^ "Tape Archive (tar) File Format Family". www.loc.gov. Library of Congress. 7 يناير 2021. مؤرشف من الأصل في 2023-05-01. اطلع عليه بتاريخ 2023-05-01.
- ^ "Date and Time Functions"، MySQL 8.0 Reference Manual، مؤرشف من الأصل في 2022-10-19، اطلع عليه بتاريخ 2022-10-19
- ^ "8.5. Date/Time Types". PostgreSQL Documentation (بالإنجليزية). The PostgreSQL Global Development Group. 9 Feb 2023. Archived from the original on 2023-05-01. Retrieved 2023-05-01.
- ^ ا ب ج Rochkind، Mark (2004). Advanced UNIX Programing (ط. 2nd). Addison-Wesley. ص. 56–63. ISBN:978-0-13-141154-8.
- ^ Saxena، Ashutosh؛ Rawat، Sanjay. "IDRBT Working Paper No. 9" (PDF). مؤرشف من الأصل (PDF) في 2012-05-13.
- ^ "FILETIME (minwinbase.h) - Win32 apps". Microsoft Learn. Microsoft. 2 أبريل 2021. مؤرشف من الأصل في 2023-03-10. اطلع عليه بتاريخ 2023-03-09.
- ^ "File Times - Win32 apps". Microsoft Learn. Microsoft. 7 يناير 2021. مؤرشف من الأصل في 2023-03-08. اطلع عليه بتاريخ 2023-03-09.
- ^ "How to convert date/time attributes in Active Directory to standard time format". Microsoft Learn. Microsoft. مؤرشف من الأصل في 2022-10-20. اطلع عليه بتاريخ 2022-10-20.
- ^ W. Richard Stevens؛ Bill Fenner؛ Andrew M. Rudoff (2004). UNIX Network Programming. Addison-Wesley Professional. ص. 582–. ISBN:978-0-13-141155-5. مؤرشف من الأصل في 2019-03-30. اطلع عليه بتاريخ 2016-10-16.
- ^ "datetime — Basic date and time types". Python Standard Library Reference. Python Software Foundation. مؤرشف من الأصل في 2022-10-19. اطلع عليه بتاريخ 2022-10-20.
Attributes: year, month, day, hour, minute, second, microsecond, and tzinfo.
- ^ ا ب Tweney، Dylan (12 فبراير 2009). "Unix Lovers to Party Like It's 1234567890". Wired. مؤرشف من الأصل في 2014-03-29. اطلع عليه بتاريخ 2017-03-12.
- ^ "Slashdot | date +%s Turning 1111111111". 17 مارس 2005. مؤرشف من الأصل في 2020-01-12. اطلع عليه بتاريخ 2020-01-12.[هل المصدر موثوق به؟]
- ^ "Unix time facts & trivia – Unix Time . Info". مؤرشف من الأصل في 2017-10-27.
- ^ "UNIX Approaches Ripe Old Age of One Billion". Electromagnetic.net. مؤرشف من الأصل في 2013-04-13. اطلع عليه بتاريخ 2012-12-06.
- ^ Neumann، Peter G. (15 أكتوبر 2001). "The RISKS Digest, Volume 21 Issue 69". The Risks Digest. ج. 21 ع. 69. مؤرشف من الأصل في 2015-10-22. اطلع عليه بتاريخ 2012-12-06.
- ^ "Technical Problems". linuxmafia.com. مؤرشف من الأصل في 2012-10-11. اطلع عليه بتاريخ 2017-08-21.
- ^ nixCraft. "Humor: On Feb, Friday 13, 2009 Unix time Will Be 1234567890". Cyberciti.biz. اطلع عليه بتاريخ 2023-07-05.
- ^ "Google 1234567890 Logo". Google Inc. مؤرشف من الأصل في 2013-01-11. اطلع عليه بتاريخ 2013-01-28.
- ^ Ahmed، Murad (13 فبراير 2009). "At the third stroke, the Unix time will be 1234567890". ذا تايمز. مؤرشف من الأصل في 2016-11-14. اطلع عليه بتاريخ 2020-01-12.
- ^ Mashey, John R. (27 ديسمبر 2004). "Languages, Levels, Libraries, and Longevity". Queue. ج. 2 ع. 9: 32–38. DOI:10.1145/1039511.1039532. S2CID:28911378.
وصلات خارجية
[عدل]
- دليل مبرمج يونكس، الطبعة الأولى
- الحساب الشخصي لقرارات واجهة أنظمة التشغيل المحمولة بقلم لاندون كيرت نول [الإنجليزية]
- خوارزميات التاريخ منخفضة المستوى المتوافقة مع الكرونو – خوارزميات لتحويل التاريخ بين الميلادي واليولياني وعدد الأيام منذ بداية وقت يونكس