मैं ऐसी वेबसाइट विकसित कर रहा हूं जहां मुझे उपयोगकर्ताओं से अलग-अलग संभावित समय क्षेत्र से निपटना होगा। यह एक बड़ी समस्या बन जाती है क्योंकि वेबसाइट नीलामी जैसी समय-नाजुक घटनाओं को होस्ट करती है।सर्वर और क्लाइंट के बीच टाइमज़ोन से कैसे निपटें?
सर्वर पर सभी तिथियां/समय यूटीसी में हैं। डाटाबेस यूटीसी टाइमस्टैम्प में सबकुछ स्टोर करता है। PHP डिफ़ॉल्ट टाइमज़ोन यूटीसी पर भी सेट है (date_default_timezone_set('UTC');
)।
अब, मेरी समस्या यह है कि मुझे उपयोगकर्ताओं के साथ कैसे बातचीत करनी चाहिए, चाहे मैं केवल एक तारीख दिखा रहा हूं या अधिक महत्वपूर्ण, मैं उपयोगकर्ता इनपुट से दिनांक/समय पढ़ रहा हूं।
एक ठोस उदाहरण:
- एक नीलामी एक समय सीमा है, जो मैं यूटीसी के रूप में डेटाबेस में स्टोर है।
- जब मैं वेबसाइट पर नीलामी देखता हूं, तो जावास्क्रिप्ट टाइमर शेष समय की गणना करने के लिए
Date
ऑब्जेक्ट का उपयोग करता है। यह स्वचालित रूप से टाइमज़ोन को जीएमटी +0100 (मेरे स्थानीय टाइमज़ोन) में परिवर्तित करता है। तो यदि समय सीमा'2013-08-08 10:46:08'
(यूटीसी) है, तो जावास्क्रिप्ट दिनांक वस्तुAug 08 2013 11:26:15 GMT+0100 (GMT Standard Time)
वापस आ जाएगी। - यदि वर्तमान समय 11:46:08 से अधिक है तो टाइमर कहता है कि शेष समय 00:00 (जो सही है) है। बोलियां ... कहां ... और auction_deadline> जांच
सम्मिलित करें NOW() ...
: लेकिन अगर मैं एक बोली सम्मिलित करने का प्रयास करें, सर्वर
MySQL INSERT
पर शर्त के बाद से स्वीकार करता हैtrue
का मूल्यांकन
(क्योंकि auction_deadline = '2013-08-08 10:46:08'
और अब() = '2013-08-08 10:26:50'
)
सभी समय क्षेत्र के इस जम्बो मेरे दिमाग पिघला देता है। मुझे यहां क्या समझ नहीं आ रहा है? मैं लगभग निश्चित हूं कि डेटाबेस के अंदर यूटीसी में सभी तिथियों/समय को संग्रहीत करना सबसे अच्छा है। मैं सिर्फ क्रिस्टल को नहीं सोच सकता कि उपयोगकर्ता और डेटाबेस के बीच इसका सौदा कैसे किया जाता है।
यदि आपको मेरे प्रश्न को स्पष्ट करने के लिए कुछ कोड चाहिए, तो कृपया इसे कहें। –