مساعدة تقنية

Unix Timestamp بالثواني مقابل الميلي ثانية: لماذا يظهر التاريخ 1970

إذا أصبح Unix timestamp تاريخًا قرب 1970، فغالبًا قُرئت الثواني كميلي ثانية. تعرّف كيف تميّز الوحدتين.

إجابة سريعة

إذا أعطاك Unix timestamp تاريخًا قرب 1970، فالقيمة غالبًا تُفسَّر بالوحدة الخطأ.

Unix timestamps تستخدم الثواني عادةً، بينما قيم Date في JavaScript تستخدم الميلي ثانية عادةً.

الطابع الزمني الحديث ذو 10 أرقام غالبًا ثوانٍ، وذو 13 رقمًا غالبًا ميلي ثانية. إن لم تتطابق الوحدتان فقد تحتاج إلى الضرب أو القسمة على 1,000.

حوّلت طابعًا زمنيًا إلى تاريخ فوصلت إلى يناير 1970. نادرًا ما تكون الساعة معطلة. قُرئ الرقم كميلي ثانية بينما كان مخزَّنًا بالثواني—أو العكس.

ما هو Unix timestamp؟

يقيس Unix timestamp الزمن منذ Unix epoch: 1970-01-01 00:00:00 UTC. يستخدم عادةً ثواني صحيحة. يمكن تخزين اللحظة نفسها بالميلي ثانية (ثوانٍ × 1,000). الرقم نفسه لا يذكر الوحدة.

الثواني مقابل الميلي ثانية: الفرق ×1,000

الثانية الواحدة تساوي 1,000 ميلي ثانية. قارن 1720000000 مع 1720000000000. إذا كان الأول ثواني والثاني ميلي ثانية فهما نفس اللحظة. اقرأ الأول كميلي ثانية فينزاح التاريخ نحو 1970.

نتائج UTC هذه محسوبة من الأرقام أعلاه، وليست تخمينًا.

القيمة الوحدة المحتملة التفسير (UTC)
1720000000 ثوانٍ تاريخ حديث عند القراءة كثوانٍ: 2024-07-03 09:46:40 UTC
1720000000000 ميلي ثانية اللحظة نفسها عند القراءة كميلي ثانية: 2024-07-03 09:46:40 UTC
1720000000 كميلي ثانية وحدة خاطئة تاريخ قرب 1970: 1970-01-20 21:46:40 UTC

لماذا يظهر timestamp عندي 1970؟

إذا عوملت قيمة بالثواني كميلي ثانية، فالرقم أصغر 1,000 مرة مما ينبغي. يعدّ JavaScript عندئذ فترة قصيرة بعد Unix epoch، فيبقى التاريخ في 1970:

const seconds = 1720000000;

new Date(seconds);
// 1970-01-20 21:46:40 UTC

new Date(seconds * 1000);
// 2024-07-03 09:46:40 UTC

تاريخ 1970 ذاك هو الـ epoch زائد أسبوعين تقريبًا. اضرب الثواني في 1,000 قبل تمريرها إلى Date.

  • ثوانٍ
  • 1720000000
  • ميلي ثانية
  • 1720000000000
اللحظة نفسها: ثوانٍ × 1,000 = ميلي ثانية.
  • قيمة بالثواني
  • عولجت خطأً كميلي ثانية
  • تاريخ قرب 1970
قيمة بالثواني تُقرأ كميلي ثانية تسقط قرب Unix epoch.
ثوانٍ أم ميلي ثانية؟

إذا كانت النتيجة قرب 1970، تحقق من وحدة الطابع الزمني قبل البحث في المنطقة الزمنية.

هل 10 أرقام ثوانٍ و13 رقمًا ميلي ثانية؟

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

لماذا يحدث هذا كثيرًا في JavaScript

في JavaScript، قيمة Date الرقمية ميلي ثانية منذ الـ epoch. كثير من الخوادم الخلفية وقواعد البيانات وأدوات Unix ما زالت تخزّن ثواني. تمرير قيمة بالثواني مباشرة إلى Date خطأ شائع:

const unixSeconds = 1720000000;

const wrong = new Date(unixSeconds);
const correct = new Date(unixSeconds * 1000);

wrong قرب 1970 (1970-01-20 21:46:40 UTC). correct هو اللحظة الحديثة (2024-07-03 09:46:40 UTC).

أنظمة أخرى تستخدم وحدات مختلفة

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

كيف أعرف أي وحدة يستخدمها timestamp؟

مرّ بهذه الفحوصات بالترتيب. عدد الأرقام وحده لا يكفي.

  1. راجع توثيق الـ API أو قاعدة البيانات.
  2. انظر إلى العدد التقريبي للأرقام.
  3. قارن القيمة بطابع زمني حديث معقول.
  4. اختبر القيمة كثوانٍ وكميلي ثانية.
  5. تحقق مما إذا كان التاريخ الناتج منطقيًا.

إذا سقط تفسير في 1970 والآخر على تاريخ تعرفه، فالسبب عدم تطابق الوحدة.

أخطاء شائعة مع Unix timestamp

  • ثوانٍ فُسّرت كميلي ثانية. ينهار التاريخ نحو 1970، كما في المثال أعلاه.
  • ميلي ثانية فُسّرت كثوانٍ. يقفز التاريخ بعيدًا في المستقبل، أو تفشل التحويلة.
  • الضرب في 1,000 مرتين. قيمة كانت أصلًا ميلي ثانية تصبح ضخمة ويقفز التاريخ قرونًا إلى الأمام.
  • القسمة على 1,000 مرتين. قيمة بالثواني تتقلص مرة أخرى، وتعود قرب 1970.
  • لوم المنطقة الزمنية. المنطقة قد تزيح ساعات أو يوم التقويم. لا تنقل طابعًا زمنيًا حديثًا إلى 1970.
  • معاملة سلسلة تاريخ منسّقة كـ Unix timestamp. قيمة مثل 2024-07-03T09:46:40Z ليست رقم epoch. حلّلها كتاريخ، لا كثوانٍ.

هل المنطقة الزمنية تسبب مشكلة 1970؟

عادةً لا. قد تغيّر المنطقة الزمنية الساعة المعروضة، وقرب منتصف الليل يوم التقويم. لا تحوّل Unix timestamp حديثًا إلى 1970. إن كانت النتيجة في 1970، افحص أولًا الثواني مقابل الميلي ثانية.

حوّل وافحص Unix timestamp

يمكن لـ NEXNARA محول التاريخ والوقت تحويل Unix timestamp في متصفحك.

الصق ثواني أو ميلي ثانية Unix، استخدم الطابع الحالي، اعرض UTC والوقت المحلي، حوّل المناطق الزمنية ونسّق تاريخًا. الكشف التلقائي يعامل غالبًا 10 أرقام كثوانٍ و13 كميلي ثانية؛ يمكنك مع ذلك اختيار الوحدة.

التحويل نفسه يجري في متصفحك. هذه الأداة لا ترسل تواريخ أو طوابع زمنية إلى خادم NEXNARA. الإعلانات وميزات الموقع الأخرى ما زالت تستخدم الشبكة؛ وذلك منفصل عن التحويل.

تحتاج إلى فحص Unix timestamp؟ افتح محول التاريخ والوقت وقارن الثواني بالميلي ثانية.

FAQ

لماذا يظهر Unix timestamp عندي 1970؟

غالبًا ثوانٍ قُرئت كميلي ثانية. يعالج JavaScript رقمًا أصغر بكثير، فيقع التاريخ بعد 1970-01-01 00:00:00 UTC بقليل. اضرب الثواني في 1,000 وحوّل مرة أخرى.

هل Unix timestamps بالثواني أم بالميلي ثانية؟

Unix timestamps تستخدم الثواني عادةً. كثير من واجهات API للويب وDate في JavaScript تستخدم الميلي ثانية. راجع دائمًا ما يوثّقه ذلك النظام. بعضها يستخدم ميكروثانية أو نانو ثانية.

كيف أحوّل الثواني إلى ميلي ثانية؟

اضرب في 1,000. 1720000000 ثانية تساوي 1720000000000 ميلي ثانية. بالاتجاه المعاكس اقسم على 1,000.

لماذا يستخدم Date في JavaScript الميلي ثانية؟

الطابع الزمني الرقمي لـ Date في JavaScript معرَّف كميلي ثانية منذ Unix epoch. لذلك new Date(unixSeconds) خطأ عندما تكون unixSeconds ثواني Unix.

هل الطابع ذو 10 أرقام دائمًا ثوانٍ؟

لا. للتاريخ الحديث غالبًا ثوانٍ، و13 رقمًا غالبًا ميلي ثانية. عدد الأرقام إشارة لا قاعدة. أكّد بالتوثيق أو بتاريخ منطقي.

هل يحتوي Unix timestamp على منطقة زمنية؟

لا. Unix timestamp لحظة تُعدّ من 1970-01-01 00:00:00 UTC. المناطق الزمنية تؤثر في كيفية العرض، لا في الرقم نفسه.