ما هو طابع الوقت في يونكس؟
طابع الوقت في يونكس (ويُعرف أيضًا بوقت الحقبة Epoch Time أو وقت POSIX) هو عدد الثواني التي مرّت منذ منتصف ليل 1 يناير 1970 بتوقيت UTC (00:00:00)، دون احتساب الثواني الكبيسة. وهو الطريقة العالمية التي تخزّن بها الأجهزة لحظة زمنية معينة، بصرف النظر عن المناطق الزمنية أو تنسيقات التقويم. تأخذ هذه الحاسبة طابع وقت بوحدة المللي ثانية (وهي الوحدة التي تُرجعها معظم لغات البرمجة، مثل الدالة Date.now() في جافاسكربت) وتحوّله إلى ثوانٍ ودقائق وأيام منذ بداية الحقبة.
طريقة الاستخدام
أدخل وقت يونكس بالمللي ثانية في الحقل المخصص ثم اضغط للحساب. تقوم الأداة بالقسمة مع التقريب لأسفل على 1000 لتعطيك عدد ثواني يونكس الكاملة — وهي الصيغة الأكثر شيوعًا في قواعد البيانات وواجهات برمجة التطبيقات (APIs) وأمر لينكس date +%s. كما يعرض جدول النتائج القيمة الأصلية بالمللي ثانية إضافةً إلى عدد الدقائق والأيام المنقضية للتحقق السريع من صحة القيمة.
شرح المعادلة
المعادلة الأساسية للتحويل هي $$\text{epoch\_s} = \left\lfloor \frac{\text{now\_ms}}{1000} \right\rfloor$$ القسمة على 1000 تحوّل المللي ثانية إلى ثوانٍ، أما التقريب لأسفل (floor) فيحذف الجزء الكسري لتحصل على طابع وقت بثوانٍ كاملة. وتُحسب الدقائق عبر \(\left\lfloor \frac{\text{now\_ms}}{60000} \right\rfloor\)، بينما تُحسب الأيام عبر \(\left\lfloor \frac{\text{now\_ms}}{86{,}400{,}000} \right\rfloor\)، لأن اليوم الواحد يساوي 86,400 ثانية = 86,400,000 مللي ثانية.
مثال تطبيقي
لنفترض أن \(\text{now\_ms} = 1{,}700{,}000{,}000{,}000\). عندئذٍ يكون $$\text{epoch\_s} = \left\lfloor \frac{1{,}700{,}000{,}000{,}000}{1000} \right\rfloor = 1{,}700{,}000{,}000 \text{ ثانية}$$ وهو ما يوافق تاريخ 14 نوفمبر 2023. أما الدقائق منذ بداية الحقبة فهي \(\left\lfloor \frac{1{,}700{,}000{,}000{,}000}{60000} \right\rfloor = 28{,}333{,}333\)، والأيام هي \(\left\lfloor \frac{1{,}700{,}000{,}000{,}000}{86{,}400{,}000} \right\rfloor = 19{,}675\).
الأسئلة الشائعة
لماذا تُستخدم الثواني وليس المللي ثانية في كل مكان؟ الأنظمة القديمة وكثير من واجهات برمجة التطبيقات (مثل يونكس وPostgreSQL وحقل exp في رموز JWT) تخزّن الوقت بالثواني، بينما تستخدم المتصفحات ولغة جافا المللي ثانية. والتحويل بينهما لا يتطلب سوى الضرب أو القسمة على 1000.
ماذا عن الثواني الكبيسة؟ يتجاهل وقت يونكس الثواني الكبيسة، فيكون العد قياسًا خطيًا نقيًا — وهذا مريح للعمليات الحسابية، لكنه لا يتوافق تمامًا مع توقيت UTC الفلكي.
هل ستتعطّل هذه الأنظمة عام 2038؟ الأنظمة التي تخزّن عدد الثواني في عدد صحيح مُوقَّع بسعة 32 بت ستتعرض لتجاوز السعة (overflow) في 19 يناير 2038. أما الأنظمة الحديثة ذات الـ 64 بت فلا تتأثر بذلك.