محول الطابع الزمني ليونكس إلى تاريخ

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

شارك هذه الأداة

ضمّن في موقعك

ما هو Unix timestamp؟

Unix timestamp، أو ما يُعرف أيضاً باسم Unix time أو POSIX time، هو عدد الثواني المنقضية منذ 1970-01-01 00:00:00 UTC، وتُعرف هذه اللحظة بـ Unix epoch. إنه معيار واسع الانتشار في الحوسبة لأنه يمثل نقطة زمنية برقم صحيح واحد، مما يجعل التخزين والمقارنة والعمليات الحسابية مباشرة وسهلة.

يعمل JavaScript داخلياً بالميلي ثانية، لذلك يعيد Date.now() Unix timestamp مضروباً في 1000. العديد من الـ APIs والقواعد البيانات والأنظمة الخلفية تستخدم الثواني بدلاً من ذلك. تقبل هذه الأداة أي من الصيغتين وتكتشف تلقائياً ما إذا كان الرقم بالثواني أم بالميلي ثانية بناءً على حجم الرقم الذي تدخله.

Unix timestamps ملحوظة

الطابع الزمنيالتاريخ (UTC)ملاحظة
01970-01-01 00:00:00Unix epoch
1,000,000,0002001-09-09 01:46:40مليار ثانية
2,000,000,0002033-05-18 03:33:20ملياري ثانية
2,147,483,6472038-01-19 03:14:07مشكلة عام 2038 (الحد الأقصى لـ 32-bit)

لماذا 1970؟

تم اختيار Unix epoch في الأول من يناير 1970 جزئياً بالاتفاق وجزئياً بسبب قيود عملية. تم تطوير Unix في أواخر الستينيات وأوائل السبعينيات في Bell Labs. احتاج المطورون إلى تاريخ بداية حديث وعددي سهل لتمثيل الوقت. كان الأول من يناير 1970 حديثاً كفاية ليكون عملياً وليس له أي أهمية تقنية خاصة — كان ببساطة نقطة ارتكاز ملائمة.

توجد تواريخ بداية بديلة في أنظمة أخرى: FILETIME epoch في Windows هو الأول من يناير 1601؛ وقت GPS بدأ في السادس من يناير 1980؛ NTP epoch هو الأول من يناير 1900. عند التحويل بين الأنظمة، من الضروري معرفة نقطة البداية لكل نظام.

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

Unix timestamp الأصلي يكون بالثواني. معظم لغات جانب الخادم والأنظمة (Unix shell، time.time() في Python، time() في PHP، معظم قواعس البيانات) تستخدم الثواني. Date.now() و new Date().getTime() في JavaScript يعيدان الميلي ثانية. عدم التطابق هذا سبب شائع للأخطاء عندما تتواصل واجهات JavaScript الأمامية مع APIs خلفية.

Unix timestamp بالثواني حالياً هو رقم مكون من 10 أرقام (حوالي 1,700,000,000 اعتباراً من 2023). الطابع الزمني بالميلي ثانية هو رقم مكون من 13 رقماً. تكتشف الآلة الحاسبة صيغتك بناءً على عدد الأرقام وتحول تلقائياً.

مشكلة عام 2038

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

يُطلق على هذا أحياناً مشكلة "Y2K38" أو Unix Millennium Bug. الأنظمة الحديثة 64-bit لا تتأثر، لأن العدد الصحيح 64-bit الموقّع يمكنه تمثيل طوابع زمنية لحوالي 292 مليار سنة. ومع ذلك، الأنظمة المدمجة وقواعد البيانات القديمة والبرامج 32-bit الأقدم قد تظل عرضة للخطر. العديد من الصناعات — بما في ذلك الاتصالات والبنوك وأنظمة التحكم الصناعية — لديها جهود هجرة مستمرة للتعامل مع هذا.

كيفية الحصول على Unix timestamp الحالي

اللغة / البيئةالأمر
JavaScriptMath.floor(Date.now() / 1000)
Pythonimport time; int(time.time())
PHPtime()
Bashdate +%s
SQL (PostgreSQL)EXTRACT(EPOCH FROM NOW())::int
SQL (MySQL)UNIX_TIMESTAMP()
Gotime.Now().Unix()
RustSystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs()

الاستخدامات العملية

تطوير API: تستخدم REST APIs بشكل شائع Unix timestamps لحقول created_at و updated_at وانتهاء صلاحية الرموز. الطابع الزمني محايد من حيث المنطقة الزمنية وغير غامض — على عكس سلاسل التواريخ المنسقة، التي تعتمد على الإعدادات المحلية واصطلاحات التنسيق.

انتهاء صلاحية الرموز: JWT (JSON Web Tokens) تستخدم Unix timestamps لمطالبات exp (انتهاء الصلاحية) و iat (الصادرة في). ينتهي صلاحية الرمز عندما يتجاوز الطابع الزمني الحالي قيمة exp. حساب أوقات انتهاء الصلاحية — "يجب أن ينتهي صلاح هذا الرمز في 24 ساعة" — يتطلب إضافة 86,400 ثانية إلى الطابع الزمني الحالي.

Cache TTL: عادة ما يتم تعيين انتهاء صلاحية الذاكرة المؤقتة كطابع زمني Unix أو كعدد ثواني من الآن. غالباً ما يتطلب تصحيح مشاكل الذاكرة المؤقتة تحويل طابع زمني منتهي الصلاحية مخزن إلى تاريخ يمكن قراءته.

تحليل السجلات: غالباً ما تتضمن سجلات الخادم Unix timestamps. تحويلها إلى تواريخ يمكن قراءتها هي الخطوة الأولى في ربط إدخالات السجل بالأحداث في العالم الحقيقي.

تخزين قاعدة البيانات: تخزين الطوابع الزمنية كأعداد صحيحة بدلاً من السلاسل المنسقة يتجنب أخطاء تحويل المناطق الزمنية ويبسط الفرز والاستعلامات عن النطاقات والعمليات الحسابية. يصبح الاستعلام عن "جميع السجلات من آخر 7 أيام" WHERE created_at > (NOW_UNIX - 604800).