ऑनलाइन घटनाओं के लिए समय प्रदर्शित करने के लिए उचित समय क्षेत्र क्या है?


11

मेरी वेबसाइट में नियमित रूप से उपयोगकर्ता-शेड्यूल किए गए इवेंट हैं। अभी हम साइट पर सभी घटनाओं के लिए बेस टाइमज़ोन के रूप में अपने टाइमज़ोन ईडीटी (या ईएसटी) का उपयोग कर रहे हैं। मुझे ऐसा लगता है कि यह या तो 1) गलत है, या 2) बहुत भ्रामक है। वर्तमान में, हमारे पास अमेरिका और यूरोप के सभी उपयोगकर्ता हैं।

क्या ग्राहकों के समय क्षेत्र के आधार पर स्थानीयकरण का उचित तरीका है? UTC / GMT का उपयोग करें?

धन्यवाद

जवाबों:


4

ईमानदारी से, यह एक ऐसा मुद्दा है जो कई समय-क्षेत्रों द्वारा उपयोग की जाने वाली वेबसाइट होने पर अक्सर देखा जाता है। लड़ाई को दूर करने के तरीकों की एक लंबी सूची है। बैड को संक्षेप में प्रस्तुत करने के लिए, वहाँ योगदान करने वाले कारकों की एक बहुत कुछ है कि कैसे विभिन्न टाइमज़ोन संसाधित किए जाते हैं।

अधिकांश वेबसाइट इस समस्या के समाधान के लिए दो अलग-अलग समाधानों में से एक का चयन करती हैं:

1) डेटाबेस में UTC के रूप में दिनांक शामिल करने वाली किसी भी चीज़ को संग्रहीत करें ... और अपनी वेबसाइट पर उपयोगकर्ताओं के लिए उपयोगकर्ता द्वारा निर्धारित सेटिंग को चुनने की अनुमति दें कि वे किस समयक्षेत्र में हैं ... या कुछ भू-आईपी-लुकअप जादू का पता लगाने के लिए दुनिया में वे कहाँ हैं और उचित समय-क्षेत्र पाते हैं ... और फिर हर बार जब आप तारीख प्रदर्शित करते हैं ... स्थानीयकरण के लिए जो भी फ़ंक्शन आवश्यक हो उसे कॉल करना सुनिश्चित करें। लगभग हर प्रोग्रामिंग भाषा में एक निर्दिष्ट टाइमज़ोन का उपयोग करके दिनांक प्रदर्शित करने के लिए कुछ विधि होती है। दिनांक डालने वाले उपयोगकर्ताओं के लिए आपको रिवर्स में भी ऐसा करना होगा। (स्थानीय समय निकालें और DB स्टोरेज के लिए वापस UTC में कनवर्ट करें) यह संभवतः सबसे आम तरीका है। यह आपको "पहिया का फिर से आविष्कार करने" की कोशिश करने से बहुत समय बचाएगा। जहां तक ​​अनाम आगंतुक जाने की ... आप या तो ए) ईएसटी / ईडीटी (उपयुक्त के रूप में प्रदर्शित करने के लिए अंतर्निहित फ़ंक्शन कॉल का उपयोग करके) या बी के साथ छड़ी कर सकते हैं या जियो-आईपी-लुकअप चीज़ पर वापस लौट सकते हैं और एक शिक्षित अनुमान के आधार पर टाइमज़ोन चुन सकते हैं। आपके द्वारा दिनांक / समय प्रदर्शित करने वाले समय-क्षेत्र को हमेशा निर्दिष्ट करना भी एक अच्छा विचार है; कभी भी "12:00" न कहें ... सुनिश्चित करें कि यह "12:00 EDT" कहता है

या 2) अब और जब पोस्ट बनाई गई थी, तब के अंतर को प्रदर्शित करने के लिए स्टैकएक्सचेंज के मॉडल (और कई अन्य) का पालन करें। यानी "एक्स डेट पर पोस्ट किया गया" के बजाय ... आप "एक्स घंटे पहले" या "एक्स दिन एक्स घंटे पहले" आदि ... या भविष्य की तारीखों के लिए ... "6 दिनों में 14 घंटे ..." यह कई स्थितियों के लिए जल्दी से सामान्य हो रहा है ... लेकिन कैलेंडर-प्रकार के शेड्यूल के लिए आदर्श नहीं है।

बेशक ... आप अभी भी दोनों के कुछ प्रकार के हाइब्रिड को अपना सकते हैं ... और आपको एक कदम और आगे बढ़ने की तारीखों की भी आवश्यकता हो सकती है ... लेकिन किसी घटना के लिए एक विशिष्ट समय-क्षेत्र भी संग्रहीत करें। अंतत: निर्णय आपका है।


8

यहां समस्या यह है: यूरोपीय संघ और अमेरिका एक ही समय में डीएसटी को चालू और बंद नहीं करते हैं; इस मार्च में, इन घटनाओं के बीच तीन सप्ताह का अंतर था।

यहाँ इस अवधि के दौरान क्या होता है। मान लीजिए कि आपके पास हर दिन एक ही समय पर एक घटना है और जब से आप अमेरिका में स्थित हैं, आप यूएस जीएसटी का उपयोग करके समय को समायोजित करने जा रहे हैं।

Day (2001)   United States   Europe      United Kingdom   Global    Time delta
March 5th    EST 1500        CET  2100   GMT 2000         GMT 2000        +23h
March 6th    EDT 1500        CET  2000   GMT 1900         GMT 1900        +24h
March 7th    EDT 1500        CET  2000   GMT 1900         GMT 1900        +24h
..............................................................................
March 26th   EDT 1500        CET  2000   GMT 1900         GMT 1900        +24h
March 27th   EDT 1500        CEST 2100   BST 2000         GMT 1900        +24h

आइए सभी संभावनाओं का विश्लेषण करें:

  • यदि आप एक वैश्विक टाइमज़ोन में समय प्रदर्शित करते हैं और इसे यूटीसी कहते हैं , जो करने के लिए सही चीज़ लगती है, तो आप अपने अमेरिकी ग्राहकों को भ्रमित करने जा रहे हैं, जो अलग-अलग यूटीसी समय (कल शाम 8 बजे, आज शाम 7 बजे) देखने जा रहे हैं। एक ही दीवार घड़ी समय (कल 03:00, आज 3pm फिर से), और फिर अपने यूरोपीय संघ के आधार पर ग्राहकों को, जो नहीं है पोस्ट की गई समय घड़ी परिवर्तन देख सकते हैं और अभी तक उनकी दीवार घड़ी घटना समय में परिवर्तन करना होगा।

  • यदि आप वैश्विक समय-क्षेत्र में समय प्रदर्शित करते हैं और इसे GMT कहते हैं , तो अमेरिकी ग्राहकों को भ्रमित करने के अलावा, आप यूके के उन ग्राहकों को भी भ्रमित करेंगे, जो GMT से BST पर स्विच करते हैं। यह समझना उचित है कि EDT 1500 और EST 1400 एक ही समय में हैं; अब इसका अनुवाद BST / GMT में करें (अतिरिक्त समस्या के साथ जो आप साइट के किसी भी भाग में BST बार नहीं दिखा रहे हैं)।

  • यदि आप यूरोपीय संघ के समयक्षेत्र में टाइमज़ोन प्रदर्शित करते हैं (मैंने GMT / UTC भ्रम से बचने के लिए CET / CEST का उपयोग किया है), तो जाहिर है कि यह आपके अमेरिकी ग्राहकों के लिए सुपर भ्रामक होने वाला है, जो इवेंट का समय दो बार पीछे और फिर से अपनी दीवार का अनुभव करते हैं। घड़ी का समय अपने आप को बदल। हालांकि आपके अमेरिकी ग्राहक पहले स्विच के लिए तैयार हो सकते हैं (आखिरकार उन्हें उसी दिन अपनी दीवार घड़ियों को बदलना होगा), वे बाद में आश्चर्यचकित होंगे।

  • यदि आप अमेरिका के समयक्षेत्र (जैसे EST / EDT ) में टाइमज़ोन प्रदर्शित करते हैं , तो आपको ऊपर बताई गई सटीक स्थिति के बारे में पता चल जाएगा, लेकिन प्रतिबिंबित!

यह एक निराशाजनक स्थिति की तरह लगता है! इस कठोरता के माध्यम से जाने के चार साल बाद मैं इसका पता कैसे लगा सकता हूं (वर्ष में दो बार, जाहिर है): "एक समय क्षेत्र बनाओ।"

मैं वास्तव में ऊपर चित्रित स्थिति में हूं, इसलिए मैंने "एनवाईटी" (न्यूयॉर्क टाइमज़ोन) बनाया, ताकि मैं "1500 एनवाईटी" लिख सकूं जिसका अर्थ है "दोपहर 3 बजे जो भी न्यूयॉर्क में होता है उसका उपयोग करना होता है।"

इसका यह फायदा है कि, जब तक कि उपयोगकर्ता को पता है कि DST वाल्टज़र हो रहा है, उसके पास अपने स्वयं के टाइमज़ोन में आगे और पीछे परिवर्तित करने का एक बहुत ही सरल तरीका है: Google " नया यार्क में समय " यह देखने के लिए कि NY में क्या समय है। , तो इसे वहाँ से बाहर काम करते हैं। आप फैंसी भी प्राप्त कर सकते हैं और जियोलोकेशन-आधारित सेवाओं का उपयोग कर सकते हैं, जैसे time.is/15:00_in_New_York

ध्यान दें कि, जब आप timezone संक्षिप्त नाम समय में उपयोग कर सकते थे। तो, मैं आपसे आग्रह करता हूं कि वे इसके बारे में बहुत उलझन में न हों, क्योंकि EDT T के समान ही समय है।

आप DST के बारे में उपयोगकर्ताओं को कुछ छोटे ब्लर्ब के साथ सूचित कर सकते हैं, लोगों को मदद करने के लिए एक उचित समय रूपांतरण webservice से जोड़ रहे हैं। आदर्श रूप से सभी टाइमस्टैम्प में स्थानीय समय में परिवर्तित होने का विकल्प होना चाहिए।


जब सभी ने कहा और किया है, तो आपको महसूस करना चाहिए कि मैं हर समय कमरे में हाथी की अनदेखी कर रहा हूं, और यह "उलटी गिनती" समाधान है जिसे आपने पहले ही लागू किया है। "1 दिन में 2 घंटे 45 मिनट 47 सेकंड" के बारे में कुछ भी भ्रमित नहीं है (और अगर आपको लगता है कि आपको उस सटीकता की ज़रूरत नहीं है जो आप फिर से सोचना चाहते हैं )।

निश्चित रूप से, मेरे अनुभव में, मेरे पास कभी भी ऐसी चीज़ का विलास नहीं था जो स्थिर पाठ नहीं था, इसलिए मुझे ऊपर चित्रित अविश्वसनीय गंदगी को संभालना पड़ा (और यह केवल इसकी शुरुआत है! दक्षिणी क्षेत्र के बारे में कैसा है, कि डीएसटी पीछे की ओर है?) , लेकिन आपके उपयोग के मामले में यह भ्रम की कम से कम क्षमता के साथ समाधान जैसा लगता है। आपको वर्ष में दो धागे मिल सकते हैं "23 घंटे" और "25 घंटे" घटनाओं के बारे में पूछते हुए, जबकि यह सामान्य रूप से "24 घंटे" से नीचे गिना जाता है, लेकिन यही है।


क्या स्थानीयकरण वास्तव में एक अच्छा विकल्प नहीं है? मुझे ऐसा लगता है कि जाने का सबसे अच्छा तरीका है, अगर यह हमेशा सटीक होता है।
JT703

@ jt703 मुझे लगा कि स्थानीयकरण (अ ला टाइम.इस) किसी कारण से आपके लिए उपलब्ध नहीं है, क्योंकि, जब तक यह काम करता है, यह एक बहुत अच्छा समाधान लगता है। फिर भी, DST आपके उपयोगकर्ताओं को बिना तैयारी के पकड़ सकता है। :)
badp
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.