أدوات المطور · محول الطابع الزمني يونكس
الثواني الكبيسة ووقت يونكس: لماذا يتظاهر العصر بعدم وجودهما
· خلفية
الطوابع الزمنية وقت يونكس المناطق الزمنية
لقد أدخل UTC ثواني كبيسة منذ 1972، لكن وقت Unix ببساطة لا يحسبها، مما يعني أن بعض الثواني قد حدثت مرتين. يشرح هذا المنشور السبب، وما هو التلطيخ، ولماذا من المقرر أن تنتهي الممارسة بأكملها.
الخطأ الثاني حدث مرتين — 23:59:60 في أحد الأنظمة، و23:59:59 المتكرر في نظام آخر، وخطأ مفتاح مكرر في منتصف الليل
لا يمكن لـ ToolAcre إنتاج صف ISO ينتهي بـ `23:59:60`. يحدد اختبارها حدود الثانية الكبيسة ويتوقع تنسيق قيمة حقبة واحدة كـ `2016-12-31T23:59:59.000Z` والقيمة التالية كـ `2017-01-01T00:00:00.000Z`. لا توجد لحظة إضافية قابلة للعرض بينهما.
يمكن أن تؤثر هذه الحقيقة على السجلات التي يستخدم مصدرها الخارجي اتفاقية أخرى، لكن هذا المستودع لا يحتوي على دليل حادث مفتاح مكرر. إذا ظهرت تسميات متكررة في النظام، فافحص مسار الساعة والتخزين بدلاً من إسنادها تلقائيًا إلى المحول.
وبالتالي فإن النظام الذي يتطلب تسمية فريدة لكل ثانية فعلية يحتاج إلى سياق أكثر من تعيين Unix-to-Date هذا. لا يمكن للمحول تصنيع تسمية يحذفها الطراز الخاص به.
ToolAcre يثبت أنه لا يمكن تمثيله 23:59:60؛ ولا يوثق حوادث المفاتيح المكررة
وأوضح المخطط الزمني الذري ودوران الأرض وعتبة التسامح. لم يتم إثبات هذه المطالبات العلمية والمعايير بواسطة رمز الطابع الزمني أو الاختبارات. لقد تم استبعادها عمدًا بدلاً من إعادة صياغتها من الذاكرة. الآلية هنا لا تثبت الأسباب الكامنة وراء سياسة ضبط الوقت العالمية.
لاستخدام هذا المسار، فإن الأدلة المطلوبة أبسط: التاريخ وإخراج ISO يكشفان عن التسميات الثانية العادية، ويتقدم عصر النمط POSIX عبر الحدود التي تم اختبارها. قد تتطلب معالجة مصادر حوكمة الثواني الكبيسة وجود مواد موثوقة تتجاوز مسارات المستودع المسموح بها.
وهذه الحدود واضحة وليست مراوغة: فاختبارات البرمجيات تجيب على أسئلة التمثيل، في حين يحتاج التاريخ العلمي إلى مادة مكتوبة لهذا الغرض ومراجعة وفق شروطه الخاصة.
يتطلب الأساس المنطقي المادي للثواني الكبيسة مصادر خارج هذا المستودع
يتصرف النموذج المطبق كما لو أن الأيام المدنية على محورها تحتوي على 86,400 ثانية مرقمة على نظام Unix. تختلف المدخلات الصحيحة المتتالية بمقدار ثانية واحدة، بما في ذلك عبر حدود 2016 سنة. `fromEpoch` يتم ضرب كل منهما في 1,000 ويقوم التاريخ بتنسيق عدد المللي ثانية الناتج.
إن استدعاء هذه الثواني الكبيسة "التجاهل" يصف المخرجات التي يمكن ملاحظتها: لا توجد قيمة يونكس فريدة يتم تعيينها إلى تسمية `:60`. وهذا لا يعني أن كل ساعة آلة تتقدم بشكل مماثل أثناء الإدخال الحقيقي. يقبل المحول العد؛ فهو لا يختبر أو يضبط الساعة المضيفة.
يتبع الحساب عبر النطاقات الأكبر نفس التقليد، لذا فإن طرح قيمتين من قيم Unix يقيس الفرق في عدد نمط POSIX بدلاً من إعادة بناء التسميات القفزية المحذوفة.
لا يحتوي التحويل الذي تم اختباره على تسمية ثانية كبيسة بين قيم الحقبة المتتالية
يمكن للأنظمة تطبيق الخطوات أو التكرارات أو المسحات، لكن المستودع لا يحدد مقدمي الخدمات الذين يستخدمون أي طريقة، أو خلال أي فترة زمنية أو بأي صيغة. إن نشر هذه التفاصيل دون أدلة مباشرة من شأنه أن يخلق دقة خطيرة من الناحية التشغيلية. لذلك لا تقدم هذه المقالة أي وعد بساعة خاصة بالنظام الأساسي.
إذا كانت الأحداث القريبة من حدود القفزة مهمة، فاحتفظ بتوثيق ساعة المصدر والقيم الأولية. يمكن أن يختلف نظامان لهما معالجة مختلفة حتى بعد تنسيق القيمتين كـ UTC. لا يمكن للتحويل وحده التوفيق بين سلوك أخذ العينات أو استعادة تمييز المقياس المحذوف.
يمكن أن يؤثر اختيار وقت التشغيل أيضًا على الترتيب قصير الأمد حول الحدث. احتفظ بالعدادات الرتيبة أو بيانات التسلسل الخاصة بالمصدر عندما يكون هذا التمييز مهمًا من الناحية التشغيلية.
يعد سلوك خطوة الساعة والتشويه خاصًا بالنظام الأساسي ولم يتم التحقق منه هنا
أدخل 1,483,228,799 ثانية: نتيجة ISO التي تم التحقق منها هي `2016-12-31T23:59:59.000Z`. قم بزيادة الإدخال مرة واحدة إلى 1,483,228,800: النتيجة هي `2017-01-01T00:00:00.000Z`. طرح الأعداد الصحيحة يعطي واحدًا، وهو ما يطابق التقدم المعروض في هذا النموذج.
قد تعرض الصفوف المحلية تواريخ أو إزاحات مختلفة اعتمادًا على المتصفح، ولكنها مستمدة من تلك اللحظات نفسها. استخدم الصفوف ISO للتحقق من الحدود. لا يرتبط تغيير المنطقة المحلية بوجود تسمية ثانية كبيسة.
يعد هذا الزوج بمثابة اختبار انحدار مفيد لأنه لا يوجد اعتماد على الإعدادات المحلية في سلاسل ISO. يقوم بتأمين سلوك المحول مباشرة على الحافة ذات الصلة.
مثال عملي: تم اختبار حدود المستودع 2016
أشار المصنف إلى قرار 2022 وموعد نهائي في المستقبل. لا توجد معايير أو مصدر سياسة يشكل جزءًا من أدلة التنفيذ، لذلك لم يتم التأكيد هنا على التاريخ أو التوقعات. يمكن أن تتغير سياسة ضبط الوقت وتستحق الاستشهاد الرسمي الحالي في وقت النشر.
إن حذف هذا الادعاء لا يضعف توجيهات البرنامج. لا تزال البيانات الموجودة بحاجة إلى توثيق نطاقها ووحدتها ومصدر الساعة. يظل السلوك الحالي للمحول قابلاً للاختبار بشكل مستقل عن القرارات المتعلقة بممارسات الزمن المدني المستقبلية.
يمكن للمشرفين إضافة سياق السياسة لاحقًا عن طريق الاستشهاد بالقرار مباشرةً. وحتى ذلك الحين، يكون استبعاد الموعد النهائي أكثر دقة من نشر ضمان مستقبلي غير مدعوم.
يتم حذف قرارات السياسة المستقبلية دون مصدر رسمي
TAI، GPS والمقاييس الأخرى يمكن أن تمثل الوقت بشكل مختلف، ولكن ToolAcre لا تقدم محددًا أو جدول إزاحة لها. يؤدي لصق هذا العدد كثواني Unix إلى تطبيق تفسير النمط 1970 POSIX فقط. من الممكن أن تكون النتيجة المقروءة خاطئة من الناحية الدلالية.
قم بتحويل المقاييس الأخرى بمصدر يحدد أصلها وعلاقتها في اللحظة ذات الصلة، ثم افحص قيمة يونكس الناتجة. لا تضف ثابتًا متذكرًا: فالعلاقات التي تتضمن تاريخ القفزات هي بالضبط حيث تصبح الحسابات غير المصدرية هشة.
يظهر غياب الوضع في خيارات الوحدة الثلاثة لواجهة المستخدم. لا شيء يغير النطاق الزمني. تلقائي يختار فقط بين اثنين من قرارات يونكس.
المقاييس الزمنية الأخرى خارج نطاق تطبيق محول Unix هذا
بالنسبة لهذا المحول، فإن القاعدة التي تم التحقق منها هي خطوة مباشرة من 23:59:59 إلى 00:00:00 عند الحد الذي تم اختباره. يدعم هذا النموذج حسابات العصر العادي ويشرح سبب عدم ظهور مخرجات `:60`. وهي لا تشهد على كيفية تصرف ساعة نظام التشغيل أثناء تجاوز الحدود الحقيقية.
عندما تكون الدقة القريبة من التعامل مع القفزات مهمة، فإن التحويل هو خطوة العرض الأخيرة، وليس مصدر الدليل. اجمع الوثائق على نطاق الساعة وسلوك المزامنة وحقول الأحداث الأولية أولاً. يمكن لـ ToolAcre بعد ذلك إظهار ما يعنيه عدد Unix المعلن ضمن النموذج الذي تم اختباره.
بالنسبة للسجلات العادية البعيدة عن حدود القفزات، نادرًا ما يتغير عرض هذه الفروق الدقيقة. ومع ذلك، فإن تسمية النموذج بالقرب من الحدود الحساسة تمنع الادعاءات الكاذبة بالإخلاص المادي للثانية.