العربية

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

طابع زمني واحد وساعتان: لماذا يختلف UTC والتوقيت المحلي لعصر واحد

· كيف يعمل

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

لحظة واحدة متصلة بساعتين بعقارب مختلفة
الرسم التوضيحي المتجه الأصلي ToolAcre

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

يقول العميل 9 صباحًا، والسجل يقول 16:00 — نفس الحدث، وساعتان، وتذكرة دعم لا تذهب إلى أي مكان

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

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

العصر هو لحظة، وليس وقت ساعة حائط — عدد الثواني منذ 1970 الذي ليس له منطقة خاصة به

العصر هو المسافة من 1970-01-01T00:00:00Z بالثواني أو بالمللي ثانية. لا يحتوي على مدينة أو علم التوقيت الصيفي أو تدوين الساعة المفضل. وبالتالي فإن القيمة 1,700,000,000 تحدد لحظة واحدة؛ التسميات مثل مساء الثلاثاء أو صباح الأربعاء هي توقعات يتم إجراؤها بعد اختيار كيفية قراءة تلك اللحظة.

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

كيفية تطبيق الإزاحة - إضافة أو طرح الساعات والدقائق، ومناطق نصف الساعة و45 دقيقة، والإزاحات التي تتغير خلال العام

بالنسبة للإزاحة الثابتة، تكون العملية الحسابية واضحة ومباشرة: UTC+09:00 تعرض ساعة قبل تسع ساعات من UTC، بينما UTC−05:00 تظهر ساعة متأخرة بخمس ساعات. يتم التعامل مع كسور الساعة كدقائق، لذلك لا يتم تمثيل إزاحة خمسة وأربعين دقيقة بشكل آمن عن طريق التقريب إلى عدد صحيح. العلامة تنتمي إلى القراءة المحلية المعروضة.

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

عندما يتغير التاريخ أيضًا - اللحظات التي تقترب من منتصف الليل والتي تقع في أيام تقويم مختلفة في UTC ومحليًا

يمكن أن تتجاوز حسابات الساعة حدود التقويم. تظهر لحظة عند 00:20 UTC في التاريخ السابق تحت إزاحة سالبة وفي وقت لاحق تظهر نفس التاريخ تحت إزاحة موجبة. وبالتالي فإن التذكرة التي تسجل "اليوم الرابع عشر" فقط يمكن أن تشير إلى شرائح مختلفة من سجل UTC، حتى عندما يتذكر كلا المشاركين التقويمات الخاصة بهما بدقة.

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

مثال عملي: 1700000000 في UTC، في منطقة UTC+9 وفي منطقة UTC−5 - العملية الحسابية المكتوبة ومقارنة التواريخ

تنص مقالة الوحدة المنشورة الحالية على أن 1,700,000,000 ثانية هي `2023-11-14T22:13:20.000Z`. ضمن قراءة +09:00 ثابتة، أضف تسع ساعات للحصول على 2023-11-15 07:13:20؛ تحت الثابت −05:00، اطرح خمس ساعات للحصول على 2023-11-14 17:13:20. يتغير التاريخ فقط في المثال الشرقي.

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

مثال عملي: فترة واحدة في UTC، ثم قراءتان صريحتان للإزاحة الثابتة

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

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

ما لا يغطيه هذا هو تغييرات الإزاحة التاريخية وقرارات المنطقة الزمنية السياسية، والتي تعيش في قاعدة بيانات tz بدلاً من الحساب

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

عندما يتعين على التطبيق جدولة "09:00 في هذا المكان"، احتفظ بالمنطقة المسماة واستخدم تصميم جدولة يراعي المنطقة. عندما يتعين عليه تسجيل "حدث هذا الطلب الآن"، احتفظ بلحظة. هذه متطلبات بيانات مختلفة. يمكن لـ `+02:00` الثابت أن يصف القراءة في لحظة واحدة دون تحديد القاعدة الإقليمية التي أنتجتها.

لا يمكن لحسابات الإزاحة الثابتة إعادة إنتاج القواعد الإقليمية المتغيرة

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

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