2011-03-22 16 views
6

हम बुकिंग के लिए तिथियां और समय चुनने के लिए हमारी वेबसाइट पर एक jQuery दिनांक पिकर का उपयोग कर रहे हैं। कैलेंडर वर्तमान में पीएसटी पर सेट है और यह उपयोगकर्ताओं को अन्य टाइमज़ोन से एक्सेस करने का प्रयास करते समय बग का कारण बनता है। क्या हमें सर्वर को यूटीसी बनना चाहिए और एप्लिकेशन को अपने आईपी पते के आधार पर स्वचालित रूप से उपयोगकर्ता का टाइमज़ोन चुनना चाहिए। मैं उत्सुक था कि हमें मैन्युअल चयन भी शामिल करना होगा क्योंकि स्वचालित चयन विफल हो सकता है (यानी जब उपयोगकर्ता प्रॉक्सी के माध्यम से काम करता है)। किसी भी सलाह की काफी सराहना की जाएगी।jQuery दिनांक पिकर - टाइमज़ोन अंक

उत्तर

2

मैं अनुमान लगाता हूं कि फ्रंट एंड को टाइमज़ोन की कोई समझ नहीं है।

जब वे डेटपिकर से एक समय चुनते हैं, तो बस इसे वापस पास करें (यदि उन्होंने 9 पीएम चुना है, तो बस 9 पीएम पास करें)। सर्वर पर, & समय को उस टाइमस्टैम्प में कनवर्ट करें।

उस समय, आप आईपी के आधार पर उपयोगकर्ता के टाइमज़ोन के लिए समायोजन कर सकते हैं, या फिर आप इसे लागू करना चुनते हैं। आप उपयोगकर्ता के टाइमज़ोन से मेल खाने के लिए अपने लक्ष्य समय से केवल घंटे जोड़ या घटा सकते हैं।

हालांकि, इसका मतलब यह है कि आपको यह सुनिश्चित करने के लिए कि आप उन्हें कैसे आउट करना चाहते हैं, उन्हें आउटपुट करते समय आपको फिर से विश्लेषण करने की आवश्यकता होगी। इसलिए यदि आप यूनिक्स टाइमस्टैम्प संग्रहीत कर रहे हैं, उदाहरण के लिए, सुनिश्चित करें कि आप उपयोगकर्ता के स्थान के आधार पर स्वरूपित दिनांक मुद्रित करें।

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

7

उपयोगकर्ता पहले से ही अपने टाइमज़ोन का चयन करता है जो उनकी ओएस सेटिंग्स में है। Use javascript to detect this timezone (not based on IP), और इसे सर्वर-साइड ऐप पर दिनांक पिकर मान के साथ पास करें। आप स्थानीय समय को जावास्क्रिप्ट या सर्वर-साइड में यूटीसी समय में परिवर्तित कर सकते हैं, जो भी आप चाहें। लेकिन यूटीसी में सर्वर साइड ऐप रखें, क्योंकि यह एक अच्छा अभ्यास है और आंतरिक रूप से कुछ भाषाओं का उपयोग करता है, उदाहरण के लिए, जावा में java.util.Date

1

आप केवल बार वेब इंटरफेस में प्रदर्शित करने के लिए की जरूरत है: (यूनिक्स समय) Date.getTime का उपयोग कर() सेकंड के रूप में ग्राहक पर

  • calculate समय/1000; क्रमशः Date.setTime (utc_seconds * 1000); ध्यान दें कि जावास्क्रिप्ट मिलीसेकंड का उपयोग करता
  • संचारित ग्राहक और सेकंड के रूप में सर्वर (यूनिक्स समय) यूटीसी timestamps के रूप में
  • दुकान समय (संभावना है कि अपने बैकएंड एक यूटीसी टाइमस्टैम्प करने के लिए रूपांतरण का समर्थन करता है कर रहे हैं)

के बीच हर समय यदि आपको मानव पठनीय समय के साथ सर्वर पर अन्य सामान करने की आवश्यकता है (उदाहरण के लिए एक ईमेल भेजें जिसमें मीटिंग टाइम शामिल है):

  • क्लाइंट में टाइमज़ोन कैप्चर करें (उदा।jsTimezoneDetect का प्रयोग करके) और सर्वर
  • पर सहेजें उपयोगकर्ता के लिए सर्वर साइड की गणना के लिए कब्जा कर लिया समय क्षेत्र का उपयोग

चेतावनियाँ:

  • कोई बात नहीं क्या तंत्र, आईपी आधारित स्थान का पता लगाने अपूर्ण है; मैं टाइमज़ोन पहचान
  • के लिए इसका उपयोग नहीं करता अधिकांश गैर-विंडोज सिस्टम tz database का उपयोग करते हैं; यदि आपका बैक एंड माइक्रोसॉफ्ट है, तो आपको convert विंडोज मानक टाइमज़ोन
  • की आवश्यकता हो सकती है, जबकि टाइमज़ोन का पता लगाना सूख जाता है, चीजें गलत हो सकती हैं, क्योंकि कुछ अधिकार क्षेत्र समय क्षेत्र बदलते हैं;
  • आपके आवेदन के लिए, यदि आप पुनरावर्ती मीटिंग का समर्थन करते हैं तो मैं समय क्षेत्र नियमों में अधिकतर दर्द का अनुमान लगाता हूं; ओएस आमतौर पर सेवा में इस पैक
  • आप मैन्युअल रूप से उपयोगकर्ता समय क्षेत्र (संभवतः ऑटो का पता लगाने के बाद)
स्थापित करने के लिए के लिए एक तंत्र पर विचार कर सकते शामिल
संबंधित मुद्दे