Unix timestamp: افحص الوحدة قبل أن تصدق التاريخ

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

الرقم يحتاج وحدة معلنة

يمثل الطابع الزمني مقدارًا منذ 1970-01-01T00:00:00Z. تستخدم بعض الأنظمة الثواني، بينما تمثل Date في JavaScript الزمن بالمللي ثانية، مع تجاهل الثواني الكبيسة.

اضرب الثواني في 1000 للتحويل إلى مللي ثانية. لا تعتمد على عدد الخانات وحده، خصوصًا قرب بداية الحقبة أو مع القيم السالبة؛ اقرأ عقد البيانات.

المراجع: MDN — Date timestamps, UTC and milliseconds

المنطقة تغيّر العرض لا اللحظة

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

المحول هنا يستخدم UTC صراحة، ويطلب Z في التاريخ المدخل. لا يستنتج منطقة من لغة الواجهة أو من بلدك؛ استخدم محول المناطق عند الحاجة إلى عرض محلي.

الدقة والنطاق جزء من المعنى

الكسور في حقل الثواني قد تمثل مللي ثانية؛ 1.25 ثانية ليست العدد الصحيح 1250 ثانية. احتفظ بالجزء الكسري إن كان السجل يحتاج ترتيبًا أدق من ثانية.

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

مثال: رقمان مختلفان للحظة نفسها

86400 ثانية و86400000 مللي ثانية يمثلان 1970-01-02T00:00:00.000Z. أما تفسير 86400 على أنها مللي ثانية فيعطي 1970-01-01T00:01:26.400Z؛ ليست هذه مشكلة لغة أو تقويم.

والقيمة −0.25 ثانية تقابل 1969-12-31T23:59:59.750Z. علامة السالب تعني ما قبل الحقبة، والجزء الكسري محفوظ، ولا يعني ذلك تاريخًا غير صالح تلقائيًا.

المراجع