صيغة الطابع الزمني
المحتويات:
الملخص
المسألة
نريد أن نتمكن من تتبّع وقت حدوث الأشياء باستخدام الطوابع الزمنية وصيغة طابع زمني متسقة تعمل جيدًا عبر جميع أنظمتنا وأنظمة الأطراف الثالثة.
نتعامل مع أنظمة لها صيغ طوابع زمنية مختلفة:
لا تملك رسائل JSON صيغة طابع زمني أصلية، لذا يجب أن نختار كيفية تحويل الطابع الزمني إلى سلسلة وتحويل السلسلة إلى طابع زمني، أي كيفية التسلسل وإلغاء التسلسل.
تُضبط بعض التطبيقات على استخدام التوقيت المحلي بدلًا من توقيت UTC. وقد يكون ذلك ملائمًا للمشاريع التي يجب أن تتكيف مع التوقيت المحلي، مثل المشاريع التي تطلق أحداثًا قائمة على التوقيت المحلي.
لدى بعض الأنظمة احتياجات وقدرات مختلفة للدقة الزمنية، مثل استخدام دقة زمنية بالثواني مقابل الميلي ثانية مقابل النانو ثانية. فمثلًا، يستخدم الأمر
dateفي نظام التشغيل Linux دقة افتراضية بالثواني، بينما تريد بورصة Nasdaq دقة افتراضية بالنانو ثانية.
القرار
نختار صيغة الطابع الزمني القياسية ISO 8601 بدقة النانو ثانية، وتحديدًا «YYYY-MM-DDTHH:MM:SS.NNNNNNNNNZ».
تعرض الصيغة السنة والشهر واليوم والساعة والدقيقة والثانية والنانو ثانية والمنطقة الزمنية Zulu المعروفة أيضًا بـUTC وGMT.
الحالة
تم القرار.
التفاصيل
الافتراضات
نحتاج إلى التعامل مع سلاسل نصوص الطوابع الزمنية هذه، لتحويل الطابع الزمني إلى سلسلة (أي التسلسل) وتحويل السلسلة إلى طابع زمني (أي إلغاء التسلسل).
نريد صيغة سهلة الاستخدام عمومًا وسهلة التحويل وسهلة القراءة للإنسان.
نريد التوافق مع طيف واسع من الأنظمة الخارجية التي لا نتحكم فيها، مثل أنظمة التحليلات وقواعد البيانات والأنظمة المالية.
القيود
لدى بعض الأنظمة حدود للدقة الزمنية. فمثلًا، يمكن للأمر date في نظام التشغيل macOS طباعة الدقة الزمنية بالثواني، لكن ليس بالنانو ثانية.
المواقف
نظرنا في عدد من الخيارات:
حقبة Unix (Unix epoch)، أي رقم واحد متزايد.
صيغة نصية مختصرة «YYYYMMDDTHHMMSSNNNNNNNNN».
استخدام منطقة زمنية محلية مقابل المنطقة الزمنية UTC.
الحجة
للاستخدام النموذجي، نقدّر سهولة القراءة والكتابة للبشر أكثر من السرعة أو الحجم الخام.
وللاستخدام النموذجي، نريد صيغة تعمل جيدًا في أنظمة الآلات، وتعمل جيدًا يدويًا كذلك، مثل كتابة بيانات نموذجية، وقراءة مخرجات JSON، والبحث بـgrep في ملف سجل، وهكذا.
وللاستخدام غير النموذجي، مثل الحوسبة عالية الأداء، نتوقع أننا سنرغب في تحسين أي صيغة نصية نختارها بتحويل النص إلى صيغة أسرع، مثل نوع كائن التاريخ المدمج في لغة برمجة. ولذلك فإن الصيغة النصية لا تهم كثيرًا في الحوسبة عالية الأداء (HPC).
التبعات
ستتقارب أنظمتنا النصية وأنظمة الوقت المختلفة نحو هذه الصيغة.
ذو صلة
قرارات ذات صلة
قد نريد وسيلة سريعة/سهلة لتتبّع فروق الزمن أيضًا، أي المدد. وهذا سهل مع الطوابع الزمنية لحقبة Unix.
متطلبات ذات صلة
قد نرغب في تعديل قرارنا، مثلًا إذا كان لدينا متطلب ذو صلة بنوع معين من ختم رسائل التسجيل، كما في Splunk وSumo وELK وغيرها.
نواتج ذات صلة
منسِّقات اللغات ومحلِّلاتها:
أمثلة Rosetta Code:
أمثلة SixArm:
مبادئ ذات صلة
سهل التراجع عنه. نستطيع التحول بسهولة إلى صيغة مختلفة، مثل حقبة Unix.
تأجيل التحسين المبكر. للاستخدام النموذجي لا نكترث كثيرًا لحفنة أحرف إضافية، كما في صيغة تستخدم الشرطات والنقطتين الرأسيتين.
ملاحظات
أضف ملاحظات هنا.