محول الطوابع الزمنية Unix

حوّل بين الطوابع الزمنية Unix والتواريخ المقروءة. يدعم دقة الثواني والميلي ثانية.

طريقة الاستخدام

  1. أدخل طابعًا زمنيًا Unix للتحويل إلى تاريخ مقروء
  2. أو اختر تاريخًا ووقتًا للتحويل إلى طابع زمني Unix
  3. بدّل بين تنسيق الثواني والميلي ثانية

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

  • ما هو الطابع الزمني Unix؟

    الطابع الزمني Unix هو عدد الثواني التي مرت منذ 1 يناير 1970 (UTC)، المعروف أيضًا بحقبة Unix. يُستخدم على نطاق واسع في البرمجة وقواعد البيانات.

  • ما الفرق بين الطوابع الزمنية بالثواني والميلي ثانية؟

    الطوابع الزمنية Unix بالثواني تتكون من 10 أرقام (مثل 1700000000)، بينما طوابع الميلي ثانية تتكون من 13 رقمًا (مثل 1700000000000). يستخدم JavaScript الميلي ثانية، بينما تستخدم معظم أنظمة Unix الثواني.

  • ما هي مشكلة Y2K38؟

    تخزن أنظمة 32 بت الطوابع الزمنية كعدد صحيح 32 بت موقّع، والذي سيتجاوز الحد في 19 يناير 2038. الأنظمة الحديثة ذات 64 بت لا تعاني من هذا القيد.

  • هل تأخذ هذه الأداة المناطق الزمنية بعين الاعتبار؟

    تعرض الأداة الأوقات بكلٍّ من UTC والمنطقة الزمنية المحلية لسهولة المقارنة.

مفهوم Unix Timestamp وتاريخه

الطابع الزمني Unix (Unix Timestamp) هو نظام لقياس الزمن أرسى قواعده نظام التشغيل Unix في أواخر الستينيات. يعبّر عن أي لحظة زمنية بعدد صحيح يمثّل كم ثانية مضت منذ 1 يناير 1970 الساعة 00:00:00 بتوقيت UTC. هذه اللحظة تُعرف بـ Unix Epoch أو "أصل العصر".

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

لماذا يستخدم المطورون Unix Timestamps؟

موحّدية الزمن عبر المناطق

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

سهولة الحسابات الزمنية

إجراء حسابات على الأزمنة بالأرقام أسهل بكثير من التعامل مع التواريخ بتنسيقاتها المختلفة. مثلًا:

  • إضافة 24 ساعة = إضافة 86400 ثانية
  • التحقق من انقضاء ساعة = مقارنة currentTime - savedTime > 3600
  • ترتيب الأحداث زمنيًا = مجرد مقارنة أرقام صحيحة

التخزين الكفء

الطابع الزمني Unix يُخزن كعدد صحيح بمساحة 4 أو 8 بايتات فقط، بدلًا من سلاسل نصية طويلة مثل "2024-01-15 14:30:00 UTC+3".

الثواني مقابل الميلي ثانية: تفصيل مهم

هذا من أشيع مصادر الارتباك للمطورين:

الطابع الزمني بالثواني

  • 10 أرقام (حاليًا)، مثال: 1700000000
  • يُستخدم في: معظم أنظمة Unix/Linux، بايثون (time.time())، PHP (time())، قواعد بيانات مثل MySQL
  • المعيار في معظم سياقات البرمجة التقليدية

الطابع الزمني بالميلي ثانية

  • 13 رقمًا (حاليًا)، مثال: 1700000000000
  • يُستخدم في: JavaScript (Date.now())، Java (System.currentTimeMillis())، قواعد بيانات مثل MongoDB
  • ضروري حين تحتاج إلى دقة أعلى من الثانية

كيف تُفرّق بينهما؟

أبسط طريقة هي النظر إلى عدد الأرقام. أي قيمة بـ13 رقمًا أو أكثر تكون بالأغلب بالميلي ثانية. يمكنك أيضًا قسمة القيمة على 1000: إذا كانت النتيجة تقابل تاريخًا منطقيًا، فالقيمة الأصلية بالميلي ثانية.

مشكلة عام 2038

الأنظمة التي تُخزّن الطابع الزمني Unix كعدد صحيح موقّع بـ32 بتًا تواجه مشكلة مشابهة لمشكلة Y2K. الحد الأقصى لقيمة 32-bit signed integer هو 2,147,483,647، وهو ما يُقابل 19 يناير 2038 الساعة 03:14:07 UTC. بعد هذه اللحظة ستُصبح القيمة سالبة وسيُفسر النظام التاريخ على أنه عام 1901.

الحل هو استخدام 64-bit integers لتخزين الطوابع الزمنية، وهو ما تفعله معظم الأنظمة الحديثة. لكن الأنظمة القديمة المُدمجة (Embedded Systems) وبعض قواعد البيانات القديمة قد تزال عرضة لهذه المشكلة.

التنسيقات الزمنية المرتبطة

  • ISO 8601: 2024-01-15T14:30:00Z — تنسيق دولي مقروء يُستخدم في الـ APIs الحديثة
  • RFC 2822: Mon, 15 Jan 2024 14:30:00 +0000 — يُستخدم في رسائل البريد الإلكتروني
  • تنسيق Unix: عدد صحيح نقي، الأكفأ للمعالجة والتخزين