2013-04-05 6 views
14

मुझे समझाएं: मैं डेटाबेस में एक विशिष्ट डेटाटाइम टाइमज़ोन को स्टोर करने के उचित तरीके से नहीं पूछ रहा हूं। मैं टाइमज़ोन के बारे में बात कर रहा हूं। उदाहरण के लिए:डेटाबेस में टाइमज़ोन स्टोर करने का सही तरीका?

मेरे पास 'उपयोगकर्ता' नामक एक MySQL तालिका है। अब, इस तालिका पर, मैं एक कॉलम रखना चाहता हूं जिसमें उपयोगकर्ता जहां भी रहता है उसका टाइमज़ोन शामिल है (यह उपयोगकर्ता द्वारा प्रदान किया जाता है, इसे किसी सूची से चुना जाएगा)। मैं PHP, जो एक ऐसे समय क्षेत्र तार की सूची है साथ काम कर रहा हूँ:

List of TimeZones for America

अब स्पष्ट समाधान (कम से कम मेरे लिए), 'उन' तालिका में एक VARCHAR स्तंभ बनाने के लिए किया जाएगा , फिर कॉलम में PHP द्वारा उपयोग की जाने वाली टाइमज़ोन स्ट्रिंग को स्टोर करें।

अब जब मैं इसके बारे में सोचता हूं, तो मुझे लगता है कि मैं हमेशा उस डेटाबेस तालिका के साथ बातचीत करने के लिए PHP का उपयोग करूंगा, जो अब सच है, भविष्य में ऐसा नहीं हो सकता है। और (अगर मैं गलत हूं तो मुझे सही करें) PHP का टाइमज़ोन तार शायद अन्य प्रोग्रामिंग भाषाओं के लिए काम नहीं करता है, शायद अन्य भाषाओं में टाइमज़ोन हैंडलिंग के लिए अपने 'स्थिरांक' हैं।

डीबी कॉलम में उपयोगकर्ता के टाइमज़ोन वरीयता को सहेजने के लिए आप कैसे पहुंचेंगे? किसी भी विचार निश्चित रूप से सराहना की जाती है।

नोट: PHP के टाइमज़ोन के बारे में उपयोगी बात यह है कि, यदि डीएसटी प्रभावी है, तो भी वे स्वचालित रूप से इसे ध्यान में रखते हैं, जो कि कमाल है। तो आप केवल संख्यात्मक ऑफ़सेट संग्रहीत करने के बजाय उनका उपयोग करने में मेरी रूचि देख सकते हैं।

+0

आप डेटाबेस में एक संख्यात्मक ऑफसेट स्टोर कर सकते हैं, और एक PHP "config" फ़ाइल बना सकते हैं जो संख्यात्मक ऑफ़सेट को PHP की टाइमज़ोन स्ट्रिंग में वापस मैप करें। – Passerby

+4

@Passerby - एक ऑफ़सेट टाइमज़ोन नहीं है। ऐसे कई समय क्षेत्र हैं जो साल भर ऑफसेट बदलते हैं, और कई अलग-अलग टाइमज़ोन जो समान ऑफसेट साझा करते हैं। –

+0

@MattJohnson आप किसी भी प्रारूप के ऑफ़सेट को स्टोर कर सकते हैं, जब तक कि आपका प्रोग्राम जानता है कि उन्हें वापस "अनुवाद" भाषा-विशिष्ट स्थिरांक में कैसे अनुवादित किया जाए। पूरे -8 जोन के लिए "-8" स्टोर करने के बजाय, आप कैलिफ़ोर्निया के लिए "-8.1" स्टोर कर सकते हैं, "-8.2" किसी अन्य स्थान के लिए (एक अमेरिकी नहीं, इसलिए ज्यादा नहीं पता :))। – Passerby

उत्तर

21

और (मुझे ठीक कर लें मैं गलत हूँ) पीएचपी के समय क्षेत्र तार शायद अन्य प्रोग्रामिंग भाषाओं

ठीक है, मैं करूँगा के लिए काम नहीं करते। :)

PHP IANA/Olson/TZDB/ZoneInfo database लागू करता है (एक ही चीज़ के लिए बहुत सारे नाम)। यह उद्योग मानक के लिए सबसे नज़दीकी चीज है, और यह लगभग हर प्रोग्रामिंग भाषा और मंच में लागू किया गया है।

एकमात्र ओएस जो इसे मूल रूप से समर्थन नहीं करता है वह माइक्रोसॉफ्ट विंडोज है, क्योंकि माइक्रोसॉफ्ट अपना समय क्षेत्र डेटाबेस रखता है। ऐसे में प्लेटफॉर्म जो विंडोज-केंद्रित हैं, जैसे नेट, libraries हैं जिन्हें आप टाइमज़ोन की उस शैली के लिए समर्थन चाहते हैं तो आपको इसका उपयोग करना होगा।

timezone tag wiki, या Wikipedia पर और पढ़ें।

तो हाँ - आप बस वर्ज़ोन आईडी स्ट्रिंग को वर्चर के रूप में स्टोर करते हैं। यह करने के लिए सबसे अच्छी बात है।

+0

इस बारे में नहीं पता था, कमाल! मैं टाइममार्क स्ट्रिंग आईडी को वर्चर के रूप में संग्रहीत कर दूंगा। आपका बहुत बहुत धन्यवाद! –

संबंधित मुद्दे

 संबंधित मुद्दे