العربية

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

ISO 8601 مقابل RFC 3339: تنسيقا التاريخ وراء إجاباتك API

· خلفية

الطوابع الزمنية ايزو-8601 أبيس

مسار تحويل واسع لتنسيق التاريخ والوقت يضيق إلى عقد API واحد
الرسم التوضيحي المتجه الأصلي ToolAcre

تدعي معظم واجهات برمجة التطبيقات أنها تستخدم ISO 8601 وتستخدم فعليًا RFC 3339، وهو ملف تعريف أكثر صرامة مصمم للإنترنت. يشرح هذا المنشور الوثيقتين والاختلافات بينهما وكيفية ارتباطهما بالأعداد الصحيحة.

الحقل "ISO 8601" الذي يرفض ISO 8601 الصالح - تاريخ أسبوع أو قيمة منخفضة الدقة مرسلة إلى API التي تتوقع RFC 3339

الحقل API الموصوف بشكل عرضي كـ "ISO 8601" قد يقبل شكل تاريخ ووقت واحد فقط. لا يزال من الممكن أن يفشل إرسال تمثيل آخر صالح للمعايير في المحلل اللغوي. العلاج ليس الجدال من الاسم المظلي؛ إنه توثيق القواعد النحوية الدقيقة للأمثلة واختبارات التحقق من الصحة.

يساهم ToolAcre بمخرجات أساسية مستقرة من `Date.toISOString()`، ولكنه ليس مجموعة مطابقة لكل تمثيل. تعامل مع السلسلة التي تم إنشاؤها كنموذج تبادل مفيد وقارنها بالعقد API الذي تمتلكه بالفعل.

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

لا يمكن التبديل بين معيار التاريخ الواسع والقواعد النحوية الضيقة API

يحتوي النموذج الذي تم إنشاؤه على تاريخ التقويم، `T`، والوقت خلال المللي ثانية، وزائدة Z. ويطلق عليه التنفيذ ISO 8601 (UTC) في واجهة المستخدم. يقبل الإدخال ما يقرأه التاريخ JavaScript، بما في ذلك الإزاحة الصريحة وشكل التاريخ والوقت بدون منطقة للمنتقي المحلي.

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

تعد دقة المخرجات الثابتة بالمللي ثانية اختيارًا للتنسيق، وليست دليلاً على أن المصدر قام بقياس المللي ثانية. ربما يكون التاريخ قد تلقى قيمة ثانية كاملة ولا يزال يطبع `.000`.

ToolAcre يُصدر نموذجًا واحدًا على شكل ISO؛ لا يتحقق من صحة معيار ISO 8601 الكامل

يتميز المصنف RFC 3339 وسنته وقواعد الإزاحة الإلزامية. لا يوجد نص RFC أو محلل مخصص موجود في المجموعة المصدر، لذلك لم يتم تأكيد هذه التفاصيل. يتطلب عقد التأليف ترك الدقة غير المدعومة بدلاً من الاستشهاد بالعنوان من الذاكرة.

إذا كان API يعني RFC 3339، فقم بتسميته في المخطط واختباره مقابل تطبيق يستند إلى المواصفات الفعلية. يمكن لـ ToolAcre أن يربط حقبة معروفة بمخرج UTC ISO للمقارنة، لكنه لا يمكنه التصديق على أن الإدخال التعسفي يلبي ملف التعريف هذا.

وهذه ضمانة تحريرية وهندسية: فالمواصفات القياسية هي عقود دقيقة، وإعادة صياغتها بدون النص تخاطر بتغيير المتطلبات في التوثيق.

تحتاج متطلبات RFC 3339 إلى مصدر معايير خارجي غير موجود في هذا المستودع

تعتمد المطالبات المتعلقة بالفواصل البديلة والتسميات الصغيرة و`−00:00` على لغة المعايير الدقيقة. تم حذفها هنا. يتعرف كاشف المنطقة الخاص بالمحول على Z اللاحقة أو الرقمية `±HH:MM` ويضع علامة على أوقات التاريخ بدون منطقة على أنها محلية؛ هذه هي الحدود التي يمكننا التحقق منها.

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

يجب أن يقوم المحلل اللغوي المخصص والمدرك للمعايير بإرجاع أسباب الخطأ المنظم. إن السماح للتاريخ بتطبيع المدخلات الواسعة يمكن أن يحول خطأ التحقق من الصحة API إلى تناقض لاحق عبر الأنظمة الأساسية.

يتم حذف قواعد الفواصل المحددة والإزاحة غير المعروفة بدون نص المعايير

تجعل قيم العصر الحساب والترتيب مضغوطين عندما يتم إصلاح الوحدة والأصل. تجعل أوقات التاريخ النصية UTC أو قراءة الإزاحة مرئية للأشخاص وتحافظ على هذا المُعيِّن أثناء النقل. تختار العديد من واجهات برمجة التطبيقات سلسلة واحدة أساسية لتجنب JavaScript عدد صحيح أو غموض الوحدة.

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

مثال عملي: لحظة واحدة، أربعة تمثيلات - ثانية حقبة، حقبة ميلي ثانية، سلسلة RFC 3339 في UTC وواحدة بإزاحة محلية

استخدم `2025-02-03T10:22:00.000Z` الفوري. أشكال العصر هي 1,738,578,120 ثانية و1,738,578,120,000 مللي ثانية. قراءة الإزاحة الصريحة هي `2025-02-03T12:22:00+02:00`؛ يؤدي تحليلها في ToolAcre إلى إرجاع نفس الحقبة والصف المتعارف عليه UTC ISO.

هذه أربعة تمثيلات يمكن التحقق منها في المستودع: الثواني، والملي ثانية، ومخرجات toISOString، وسلسلة الإزاحة الرقمية التي تم تحليلها بالتاريخ. لا يدعي المثال أن كل محلل خارجي يقبل نفس الدقة الكسرية أو بناء جملة الإزاحة. قم بإجراء التحقق من صحة API قبل الشحن.

يؤدي طرح الإزاحة +02:00 من الساعة المكتوبة إلى الحصول على 10:22 UTC. هذه المساواة البسيطة كافية لاختبار هذا المدخل المعين دون تعميم قواعد نحوية كاملة.

مثال عملي: لحظة واحدة في الأشكال الأربعة التي يمكن لهذا المستودع التحقق منها

HTTP تستخدم رؤوس وتواريخ البريد الإلكتروني عقودًا نصية غير مطبقة هنا. ToolAcre لا يقوم بتنسيق هذه البروتوكولات، ولا يعد بإمكانية استبدال مخرجاته ISO. يمكن أن تكون لحظة الطابع الزمني هي نفسها بينما يختلف تمثيل السلك المطلوب.

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

يجب أن يحافظ المحول المخصص أيضًا على ما إذا كانت الإزاحة المفقودة أو غير المعروفة تحمل معنى المجال. يمكن أن يؤدي تسطيح كل تاريخ نصي إلى افتراض محلي إلى تدمير تلك المعلومات.

تظل البروتوكولات النصية الأخرى خارج المحول

حدد التنسيق الضيق الذي يقبله API بدلاً من الاعتماد على تسمية واسعة النطاق. بالنسبة لهذه الأداة، فإن الإخراج الأكثر أمانًا والقابل للتكرار هو السلسلة UTC ISO التي يتم إرجاعها بواسطة `toISOString()`، ويتضمن الإدخال الرقمي الأكثر أمانًا عقدًا صريحًا للثواني أو المللي ثانية.

ToolAcre يربط بين تلك النماذج وافتراضات التقارير. ولا يفصل في جميع حالات ISO 8601 أو RFC 3339. إن الملكية الواضحة للقواعد النحوية والوحدة ومحدد المنطقة هي ما يجعل الطوابع الزمنية قابلة للنقل - وليس ربط اسم قياسي مألوف بحقل غير محدد.

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