جودة البيانات

شرح المناطق الزمنية ذات نصف الساعة وذات 45 دقيقة

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

يعكس فرق التوقيت بنصف ساعة عادةً وقوع خط طول الدولة بين منطقتين زمنيتين قياسيتين بفارق ساعة، مع قرار بتقسيم الفرق بدلًا من التقريب إلى أحد الجانبين. أما فرق التوقيت البالغ 45 دقيقة فهو أندر، ويعكس عادةً موقعًا وسطيًا مشابهًا مقرونًا بخيار متعمد للبقاء متميزًا عن فرق توقيت قياسي مجاور. ولا يُعد أي منهما خطأ في البيانات. فكلاهما منطقة زمنية قانونية مشروعة تُتتبَّع بالطريقة نفسها التي تُتتبَّع بها أي منطقة بفارق ساعات كاملة في قاعدة بيانات IANA.

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

الحل بسيط إذا بنيت له منذ البداية: اعمل دائمًا بفرق التوقيت الفعلي عن UTC المُرجَع للمنطقة، معبّرًا عنه بدقة الدقيقة، بدلًا من افتراضه أو تقريبه إلى الساعات. وخزّن أسماء المناطق وقارن بينها بدلًا من فروق التوقيت حيثما أمكن، لأن الاسم يحمل فرق التوقيت الحالي والتاريخي الدقيق دون أن تحتاج إلى تثبيت أي شيء في الشيفرة.

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