العربية

أدوات المطور · محول الطابع الزمني يونكس

عصور الميكروثانية والنانوثانية: تقصير قيم الأرقام 16 و19

· كيف يعمل

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

قيمة نانوثانية طويلة تضيق من ميكروثانية إلى ميلي ثانية
الرسم التوضيحي المتجه الأصلي ToolAcre

تُصدر بعض أوقات التشغيل فترات بالميكروثانية أو النانو ثانية، مما يوفر قيمًا مكونة من ستة عشر أو تسعة عشر رقمًا لا يمكن لمحول الثواني أو المللي ثانية قراءتها مباشرة. يشرح هذا المنشور من أين أتوا وكيفية تقصيرهم بأمان.

رقم مكون من تسعة عشر رقمًا في التتبع — time.UnixNano تم لصق الإخراج في المحول وكانت النتيجة غير منطقية

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

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

الدقة الأربعة الشائعة — الثواني، والملي ثانية، والميكروثانية، والنانوثانية، مع أعداد أرقامها للتواريخ الحالية

تتقدم الثواني مرة واحدة في الثانية، والميلي ثانية أسرع بألف مرة، والميكروثانية مليون مرة، والنانوثانية مليار مرة. غالبًا ما تظهر هذه التواريخ حول التواريخ الحالية على شكل عشرة، وثلاثة عشر، وستة عشر، وتسعة عشر رقمًا عشريًا. "في كثير من الأحيان" مهم: العلامات السلبية والتواريخ المبكرة والنطاقات البعيدة تكسر قاعدة الأرقام فقط.

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

هناك أربعة تسميات دقة شائعة، ولكن عدد الأرقام وحده لا يمثل عقد تنسيق

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

يميز أيضًا العصر عن المدة الرتيبة. قد يقوم العداد عالي الدقة بقياس الوقت منذ بدء العملية أو التمهيد وليس له علاقة بـ 1970. يؤدي قسمة هذه القيمة إلى إنتاج عداد أصغر، وليس تاريخًا تقويميًا. تأكد من الوحدة والأصل قبل إحضار النتيجة إلى محول العصر.

حدد القرار من المنتج، وليس قائمة بالبواعث المفترضة

لتقليل الميكروثانية إلى ميلي ثانية، قم بإزالة العامل 1,000؛ بالنسبة للنانو ثانية، قم بإزالة 1,000,000. يؤدي تقسيم الأعداد الصحيحة عمدًا إلى استبعاد دقة أقل من مللي ثانية. للحصول على قيمة موجبة، يأخذ الاقتطاع عدد المللي ثانية البادئة. بالنسبة للسلبيات، اختر قاعدة تقريب تتطابق مع المنتج بدلاً من افتراض أن تقطيع السلسلة له دلالات متطابقة.

قم بإجراء العملية باستخدام نص عشري أو BigInt عندما تكون الدقة مهمة. يمكن أن تبدأ عملية تقسيم الفاصلة العائمة من رقم مكون من تسعة عشر رقمًا تم تقريبه بالفعل. احتفظ بالباقي المهمل بجانب اللحظة المحولة إذا كان التحقيق يحتاج إلى ترتيب حدث خلال ميلي ثانية واحدة؛ لا يمكن لـ ToolAcre عرض تلك الفروق التي تقل عن ميلي ثانية واحدة.

مثال عملي: 1700000000123456789 — التقليص إلى أجزاء من الثانية، وقراءة النتيجة، وتسجيل الأرقام الفرعية التي تضعها جانبًا

خذ `1738577696123456789` بالنانو ثانية. تعامل معه كنص عشري، واقسمه على 1,000,000 باستخدام الأعداد الصحيحة، واحصل على 1,738,577,696,123 مللي ثانية مع باقي 456,789 نانو ثانية. أدخل حاصل المللي ثانية بشكل صريح؛ قراءتها ISO هي `2025-02-03T10:14:56.123Z`.

الباقي ليس ضجيجًا: يمكن لحدثي التتبع مشاركة ما يتم عرضه بالمللي ثانية مع الاختلاف أدناه. قم بتخزين القيم الأولية للطلب واستخدم المخرجات المخفضة فقط للتوجه البشري. سيؤدي التقريب إلى 1,738,577,696,124 إلى نقل اللحظة المعروضة إلى المللي ثانية التالية وتضليل المصدر.

يمكن مراجعة تقسيم السلسلة رقمًا برقم: تتم إزالة ستة منازل عشرية تتوافق تمامًا مع مقياس النانو ثانية إلى المللي ثانية، بينما تظل البادئة التي لم تمسها هي عدد التقويم.

مثال عملي: احتفظ بقيمة مكونة من 19 كنص مع تقليلها إلى ميلي ثانية

ينتهي ضمان العدد الصحيح الدقيق لـ JavaScript بأقل بكثير من القيم النموذجية للعصر المكونة من تسعة عشر رقمًا. يقوم المحلل اللغوي ToolAcre في النهاية باستدعاء `Number`، لذا فإن تغذية نص النانو ثانية الخام عبر اللوحة لا يمكن أن يحافظ على كل رقم. لا يعمل حد التاريخ ومحدد الوحدة المدعومان على تحويل الرقم إلى حاوية عدد صحيح بالنانو ثانية.

استخدم BigInt أو مسار معالجة مسبقة مدرك للسلسلة من أجل التخفيض، ثم قم بتمرير نتيجة المللي ثانية ذات الحجم الآمن. هذا التسلسل مهم: يمكن أن يؤدي التحليل أولاً وتقسيم الثانية إلى إتلاف الأرقام التي كنت تأمل في الاحتفاظ بها على وجه التحديد. لا يثبت عرض التقويم الناجح بقاء قيمة المصدر ذات الترتيب المنخفض.

ما لا يغطيه هذا هو دقة الساعة، التي لا علاقة لها بالدقة: يمكن أن يظل الطابع الزمني بالنانو ثانية خاطئًا بالثواني

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

وبالمثل، يمكن أن تكون الأرقام الإضافية مبطنة بدقة بدلاً من الدقة المقاسة. لتحليل الحوادث، قارن الساعات باستخدام أدلة التزامن وقارن ترتيب الأحداث باستخدام العداد الموثق الأولي. يوفر تحويل التقويم إمكانية القراءة فقط. لا تستنتج الدقة من علامة عشرية طويلة أو من ثلاثة مللي ثانية موضحة في ISO.

الخلاصة: قم بالتقليل إلى ميلي ثانية أولاً، ثم قم بالتحويل - وكيف يقرأ محول الطابع الزمني لنظام Unix القيمة المختصرة مع ذكر الوحدة

قم بتقليل الدقة غير المدعومة قبل التحويل، واحتفظ بالأصل، واذكر الباقي الذي تم تجاهله. يمكن لـ ToolAcre بعد ذلك القيام بما يعد به عقده: قراءة الثواني أو المللي ثانية الناتجة وإظهار نماذج UTC والمحلية وISO مع ظهور الوحدة المحددة.

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

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