الوقت والتواريخ

محوّل طابع يونكس الزمني

حوّل طابع يونكس الزمني إلى تاريخ ووقت مقروءين بتوقيت UTC والتوقيت المحلي، أو حوّل تاريخًا إلى طابع حقبة.

يعدّ طابع يونكس الزمني الثواني الكاملة منذ 1 يناير 1970 بتوقيت UTC. إذا كانت قيمتك من 13 رقمًا فهي بالميلي ثانية، فاقسمها على 1000 أولًا.

كيف يتحوّل وقت يونكس إلى تاريخ

طابع يونكس الزمني هو عدد الثواني المنقضية منذ 00:00:00 بتوقيت UTC في 1 يناير 1970، المعروف بالحقبة. لتحويله إلى تاريخ، تقسم الحاسبة على 86,400 (الثواني في اليوم) لإيجاد اليوم، ثم تستخدم الباقي للساعات والدقائق والثواني، كلها مقيسة بتوقيت UTC. مثلًا، 1,700,000,000 ثانية هي 14 نوفمبر 2023 الساعة 22:13:20 بتوقيت UTC. وبالاتجاه الآخر، تعدّ الثواني الكاملة من الحقبة حتى التاريخ والوقت اللذين تدخلهما. وتُتجاهل الثواني الكبيسة، وهو ما يطابق طريقة تخزين شبه كل نظام تشغيل وقاعدة بيانات للقيمة.

تُعرَض النتيجة بتوقيت UTC وبالتوقيت المحلي لمتصفحك، الذي قد يقع في يوم تقويمي مختلف إن كنت متقدّمًا أو متأخّرًا بساعات كثيرة عن غرينتش. وسطر ISO 8601 (مثلًا 2023-11-14T22:13:20Z) هو الصيغة المكتوبة التي لا لبس فيها، والحرف Z في نهايته يعني Zulu، أي UTC.

الطابع (ثوانٍ)التاريخ والوقت بـ UTCملاحظة
01970-01-01 00:00:00الحقبة
10000000002001-09-09 01:46:40مليار ثانية
17000000002023-11-14 22:13:20قيمة مثال
21474836472038-01-19 03:14:07حدّ العدد الصحيح 32 بت ذي الإشارة

الثواني والميلي ثانية ومشكلة 2038

أشيع خطأ هو الخلط بين الثواني والميلي ثانية. تخزّن معظم أنظمة الخلفية الثواني، لكن Date.now() في جافاسكريبت وكثير من السجلات تستخدم الميلي ثانية، وهي أكبر بـ1,000 مرة ولها 13 رقمًا لا 10 للتواريخ حول الآن. إن وقع تاريخ محوَّل في المستقبل البعيد، فأنت على الأرجح لصقت قيمة بالميلي ثانية في حقل الثواني. والأنظمة التي تخزّن الطابع في عدد صحيح 32 بت ذي إشارة ينفد مكانها عند 03:14:07 بتوقيت UTC في 19 يناير 2038، وهي النقطة المعروضة في الجدول؛ هذه مشكلة عام 2038، وتتفاداها الأنظمة الحديثة باستخدام عدد صحيح 64 بت، الذي يدفع الحدّ نحو 292 مليار سنة بعيدًا.

الأسئلة الشائعة

هل طابع يونكس الزمني بالثواني أم بالميلي ثانية؟

بالعُرف هو ثوانٍ كاملة منذ 1970. تُستخدَم الميلي ثانية في جافاسكريبت وبعض الواجهات البرمجية وهي أكبر بـ1,000 مرة، فقيمة حالية لها 13 رقمًا لا 10. اقسم على 1,000 للحصول على الثواني.

أي منطقة زمنية يستخدمها طابع يونكس الزمني؟

لا منطقة بذاته؛ فهو يحدّد لحظة واحدة بتوقيت UTC. يظهر الطابع نفسه بأوقات ساعة مختلفة حول العالم، ولهذا تعرض هذه الأداة توقيت UTC وتوقيتك المحلي معًا.

ما مشكلة عام 2038؟

تفيض الطوابع المخزَّنة كأعداد صحيحة 32 بت ذات إشارة عند 2,147,483,647 ثانية، أي 19 يناير 2038. بعدها تلتفّ إلى رقم سالب. ويزيل العدد الصحيح 64 بت الحدّ لأي غرض عملي.