webtrajans
ar

الطابع الزمني Unix: كيف يعمل، وكيف تحوله، وما علاقته بـ Cron؟

رقم مثل 1791460800 هو تاريخ ووقت محددان بدقة، ولا يعتمد على منطقة زمنية. هنا كيف تقرأه وتحوّله، والأخطاء الكلاسيكية بين الثواني والمللي ثانية، وأساسيات جدولة المهام بـ Cron.

آخر تحديث: قراءة 5 دقائق

إذا فتحت ملف سجلات، أو استجابة من واجهة برمجة، أو جدولًا في قاعدة بيانات، فقد ترى أرقامًا طويلة مثل 1791460800 بدل التواريخ. هذا هو الطابع الزمني Unix (Unix timestamp أو Epoch time)، أبسط طريقة لتمثيل لحظة زمنية: رقم واحد، بلا منطقة زمنية، بلا صيغة تاريخ. هذا الدليل يشرح كيف يعمل، وكيف تتجنب الأخطاء الشائعة، ثم يقدم أساسيات صيغة Cron لجدولة المهام.

التعريف

Unix timestamp = عدد الثواني منذ 1970-01-01 00:00:00 UTC.

الطابع الزمني التاريخ بتوقيت UTC
0 1970-01-01 00:00:00
1000000000 2001-09-09 01:46:40
1700000000 2023-11-14 22:13:20
1791460800 2026-10-08 12:00:00
2147483647 2038-01-19 03:14:07

القيم السالبة تمثل ما قبل 1970.

لماذا هو مفيد؟

  • مستقل عن المنطقة الزمنية: اللحظة نفسها لها الرقم نفسه في الرياض والقاهرة ولندن.
  • سهل المقارنة والحساب: الفرق بين طابعين = عدد الثواني بينهما مباشرة.
  • مضغوط: رقم واحد بدل نص طويل.

حساب سريع

المدة بالثواني
دقيقة 60
ساعة 3,600
يوم 86,400
أسبوع 604,800
سنة (365 يومًا) 31,536,000

مثال: انتهاء صلاحية رمز بعد 24 ساعة = الطابع الحالي + 86,400.

الثواني مقابل المللي ثانية

أكثر خطأ شائع في التعامل مع الطوابع:

البيئة الوحدة مثال
Unix/Linux، PHP، Python، MySQL ثوانٍ 1791460800
JavaScript، Java مللي ثانية 1791460800000
بعض الأنظمة (Go، قواعد بيانات) ميكرو أو نانو ثانية 16 أو 19 خانة

قاعدة الخانات: للتواريخ الحالية، 10 خانات = ثوانٍ، 13 خانة = مللي ثانية.

إذا رأيت تاريخًا في عام 1970 فغالبًا مررت ثواني إلى دالة تتوقع مللي ثانية. وإذا رأيت عامًا بعيدًا مثل 58000 فالعكس.

// JavaScript
Date.now();                          // مللي ثانية
Math.floor(Date.now() / 1000);       // ثوانٍ
new Date(1791460800 * 1000).toISOString(); // '2026-10-08T12:00:00.000Z'
# Python
import time, datetime
int(time.time())  # ثوانٍ
datetime.datetime.fromtimestamp(1791460800, datetime.timezone.utc)
# Linux
date +%s                 # الطابع الحالي
date -u -d @1791460800   # تحويل إلى تاريخ (GNU)

محول Unix timestamp يتعرف على الوحدة تلقائيًا ويعرض التاريخ بتوقيت UTC وتوقيتك المحلي.

المناطق الزمنية

الطابع نفسه لا يحمل منطقة زمنية؛ المنطقة تدخل فقط عند العرض:

1791460800 →
  UTC:            2026-10-08 12:00
  الرياض (UTC+3): 2026-10-08 15:00
  دبي (UTC+4):    2026-10-08 16:00
  القاهرة (UTC+3 صيفًا حتى 29 أكتوبر): 2026-10-08 15:00

القاعدة الذهبية: خزّن بالطابع أو بـ UTC، واعرض بالتوقيت المحلي. للتفاصيل حول التوقيت الصيفي وفروق المدن راجع دليل المناطق الزمنية.

ISO 8601 بديل مقروء

2026-10-08T12:00:00Z (حرف Z يعني UTC) أو 2026-10-08T15:00:00+03:00. مقروء للإنسان، ويحمل الإزاحة، ويُرتَّب أبجديًا بشكل صحيح. شائع في JSON؛ راجع دليل أساسيات JSON.

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

لأن الطابع عدد ثوانٍ، فالفرق بين لحظتين عملية طرح بسيطة:

موعد الإطلاق:  1798761600  (2027-01-01 00:00 UTC)
الآن:          1791460800  (2026-10-08 12:00 UTC)
الفرق:         7,300,800 ثانية ÷ 86,400 = 84.5 يومًا

انتبه إلى أن “يوم” بالتوقيت المحلي قد يكون 23 أو 25 ساعة في البلدان التي تطبق التوقيت الصيفي، فاستخدم مكتبات التواريخ عند الحساب بالأيام التقويمية. ولحساب الأيام بين تاريخين دون برمجة راجع دليل حساب الأيام بين تاريخين.

مشكلة عام 2038

الأنظمة القديمة تخزن الطابع في عدد صحيح موقّع 32 بت، أقصى قيمة له 2,147,483,647، وهي توافق 19 يناير 2038 الساعة 03:14:07 UTC. بعد ثانية واحدة يفيض الرقم ويصبح سالبًا، فيُفسَّر كتاريخ في 13 ديسمبر 1901.

  • معظم أنظمة التشغيل واللغات الحديثة انتقلت إلى 64 بت (يكفي لمليارات السنين).
  • الخطر الباقي في: أنظمة مدمجة قديمة، وأعمدة قواعد بيانات من نوع INT 32 بت، وصيغ ملفات قديمة.
  • في MySQL نوع TIMESTAMP كان محدودًا بعام 2038؛ استخدم DATETIME أو BIGINT للتواريخ البعيدة.

الثواني الكبيسة

Unix time يتجاهل الثواني الكبيسة: كل يوم 86,400 ثانية بالضبط. هذا يبسّط الحساب، والفرق لا يهم معظم التطبيقات.

أساسيات Cron

Cron هو مجدول المهام في أنظمة Unix، ويستخدم صيغته أيضًا GitHub Actions وKubernetes وخدمات السحابة. السطر يتكون من 5 حقول:

┌───── الدقيقة (0–59)
│ ┌───── الساعة (0–23)
│ │ ┌───── يوم الشهر (1–31)
│ │ │ ┌───── الشهر (1–12)
│ │ │ │ ┌───── يوم الأسبوع (0–6، الأحد = 0)
│ │ │ │ │
* * * * *  الأمر
الرمز المعنى
* كل القيم
, قائمة: 1,15
- نطاق: 1-5
/ خطوة: */15 كل 15

أمثلة جاهزة

الصيغة المعنى
*/5 * * * * كل 5 دقائق
0 * * * * أول كل ساعة
0 9 * * 1-5 9:00 صباحًا من الاثنين إلى الجمعة
0 9 * * 0-4 9:00 من الأحد إلى الخميس (أسبوع عمل سعودي)
30 2 * * * 2:30 فجرًا يوميًا (نسخ احتياطي)
0 0 1 * * منتصف ليل أول كل شهر
0 18 * * 5 6 مساءً كل جمعة

تنبيه: Cron يعمل بالمنطقة الزمنية للخادم، وكثير من الخوادم والخدمات السحابية على UTC. “9 صباحًا بتوقيت الرياض” على خادم UTC تعني 0 6 * * *.

مولد تعابير Cron يشرح أي تعبير بالعربية ويعرض مواعيد التشغيل القادمة.

أخطاء شائعة

  1. الخلط بين الثواني والمللي ثانية (تاريخ 1970 أو عام 58000).
  2. تخزين الوقت المحلي بدل UTC ثم ضياع ساعات عند تغيير التوقيت الصيفي.
  3. أعمدة 32 بت لتواريخ بعد 2038 (عقود الإيجار الطويلة، الضمانات).
  4. نسيان منطقة الخادم في Cron.
  5. في Cron: تحديد يوم الشهر ويوم الأسبوع معًا يعني “أو” لا “و” في معظم التطبيقات.

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

ما هو Unix timestamp؟

عدد الثواني المنقضية منذ 1 يناير 1970 الساعة 00:00:00 بتوقيت UTC، دون احتساب الثواني الكبيسة. يُستخدم في قواعد البيانات وواجهات البرمجة والسجلات لأنه رقم واحد مستقل عن المنطقة الزمنية.

كيف أعرف إن كان الطابع بالثواني أم بالمللي ثانية؟

انظر إلى عدد الخانات: الطوابع الحالية بالثواني 10 خانات (مثل 1791460800)، وبالمللي ثانية 13 خانة (مثل 1791460800000). JavaScript يستخدم المللي ثانية، وPHP وPython وأغلب قواعد البيانات تستخدم الثواني.

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

الأنظمة التي تخزن الطابع الزمني كعدد صحيح موقّع 32 بت ستتجاوز الحد الأقصى في 19 يناير 2038 الساعة 03:14:07 UTC، فيقفز الرقم إلى قيمة سالبة تعادل عام 1901. الحل استخدام 64 بت.

ماذا تعني صيغة Cron مثل 0 9 * * 1-5؟

تشغيل المهمة الساعة 9:00 صباحًا من الاثنين إلى الجمعة. الحقول الخمسة بالترتيب: الدقيقة، الساعة، يوم الشهر، الشهر، يوم الأسبوع.

أدلة ذات صلة

Base64 وترميز الروابط: كيف يعملان ومتى تستخدم كلًّا منهما؟الرابط العربي الذي يتحول إلى سلسلة %D8%A7… عند نسخه، والصورة المضمّنة في البريد كنص طويل غريب؛ كلاهما ترميز لا تشفير. هنا الفرق بينهما، وطريقة العمل، والأخطاء الشائعة.مؤشر كتلة الجسم (BMI): ماذا يقول رقمك وما الذي لا يقوله؟مؤشر كتلة الجسم رقم سريع يربط الوزن بالطول، ويستخدمه الأطباء كأداة فرز أولية. مفيد لمعظم البالغين، لكنه لا يميّز بين العضلات والدهون ولا يكفي وحده للحكم على صحتك.كم سعرة حرارية تحتاج يوميًا؟ من معدل الأيض الأساسي إلى خطة إنقاص الوزناحتياجك من السعرات ليس رقمًا عامًا مثل 2,000؛ يعتمد على وزنك وطولك وعمرك وجنسك ونشاطك. معادلتان بسيطتان تعطيانك تقديرًا جيدًا تبدأ منه ثم تعدّله حسب النتائج.تباين الألوان في الويب: ما معايير WCAG وكيف تختار ألوانًا مقروءة؟نص رمادي فاتح على خلفية بيضاء قد يبدو أنيقًا على شاشتك، لكنه صعب القراءة على هاتف في شمس الظهيرة أو لضعاف البصر. معايير WCAG تعطيك أرقامًا واضحة للحكم على أي لونين.