डेटा की गुणवत्ता

आधे घंटे और 45 मिनट वाले समय क्षेत्र, विस्तार से

ज़्यादातर डेवलपर समय क्षेत्र संभालने का अपना पहला कोड यह मानकर लिखते हैं कि हर ऑफ़सेट UTC से घंटों की पूर्ण संख्या होता है। यह धारणा ज़्यादातर समय क्षेत्रों के लिए सही रहती है, और फिर पहली बार तब टूटती है जब किसी ऐसी जगह से अनुरोध आता है जो इसका पालन नहीं करती। दुनिया के कई हिस्से आधे घंटे पर ऑफ़सेट का उपयोग करते हैं, और कम से कम एक क्षेत्र 45 मिनट का ऑफ़सेट इस्तेमाल करता है, और इनमें से कोई भी दुर्लभ या अमान्य होने के अर्थ में खास स्थिति नहीं है। यह बस वह तरीका है जिससे उन जगहों ने सूरज और अपने पड़ोसियों के सापेक्ष अपनी घड़ियाँ सेट करना चुना है।

आधे घंटे का ऑफ़सेट आम तौर पर यह दर्शाता है कि किसी देश का देशांतर दो मानक घंटे वाले समय क्षेत्रों के बीच है, और एक तरफ़ राउंड करने के बजाय बीच का रास्ता चुनने का फ़ैसला किया गया है। 45 मिनट का ऑफ़सेट और भी दुर्लभ है और आम तौर पर ऐसी ही बीच की स्थिति के साथ-साथ किसी पड़ोसी मानक ऑफ़सेट से अलग रहने के सोचे-समझे फ़ैसले को दर्शाता है। इनमें से कोई भी डेटा की गलती नहीं है। दोनों वैध कानूनी समय क्षेत्र हैं जिन्हें IANA डेटाबेस में किसी भी घंटे वाले समय क्षेत्र की तरह ही ट्रैक किया जाता है।

यह वास्तव में सॉफ़्टवेयर को वहाँ तोड़ता है जहाँ डेट और टाइम की गणना में धारणाएँ हार्डकोड होती हैं। जो कोड ऑफ़सेट को निकटतम घंटे तक राउंड करता है, जो ऑफ़सेट को घंटों की पूर्णांक संख्या के रूप में सहेजता है, या जो सिर्फ़ पूरे और आधे घंटे के अंतराल से समय क्षेत्रों की ड्रॉपडाउन सूची बनाता है, वह इन समय क्षेत्रों को चुपचाप गलत संभालेगा। विफलता भी आम तौर पर चुपचाप होती है। कोई स्पष्ट एरर आने के बजाय समय पंद्रह या तीस मिनट गलत होगा, जिससे बग टेस्टिंग में आसानी से छूट जाता है और तभी सामने आता है जब प्रभावित क्षेत्र का कोई असली उपयोगकर्ता कुछ गलत होने की शिकायत करता है।

अगर आप शुरू से इसे ध्यान में रखकर बनाते हैं तो समाधान सीधा है: घंटों की धारणा बनाने या उनमें राउंड करने के बजाय हमेशा किसी समय क्षेत्र के लिए लौटाए गए वास्तविक UTC ऑफ़सेट के साथ काम करें, जो मिनट की सटीकता के साथ व्यक्त हो। जहाँ संभव हो, ऑफ़सेट के बजाय समय क्षेत्र के नाम सहेजें और उनकी तुलना करें, क्योंकि नाम में सटीक मौजूदा और ऐतिहासिक ऑफ़सेट शामिल होता है और आपको कुछ भी हार्डकोड करने की ज़रूरत नहीं पड़ती।

एक समय क्षेत्र लुकअप जो IANA समय क्षेत्र के नाम के साथ सटीक ऑफ़सेट लौटाता है, यहाँ अनुमान लगाने की ज़रूरत खत्म कर देता है। किसी लोकेशन का ऑफ़सेट सिर्फ़ उसके देश या क्षेत्र से मान लेने के बजाय निर्देशांकों या समय क्षेत्र को सीधे क्वेरी करें, क्योंकि ऑफ़सेट एक ही देश के भीतर भी अलग हो सकते हैं और शायद ही कभी हर जगह घंटे के साथ ठीक-ठीक मेल खाते हैं।