मैं पिछले कुछ घंटों से इस विषय पर पढ़ रहा हूं, और मुझे लगता है कि मुझे इस पर एक संभाल है, लेकिन मुझे कुछ पुष्टि चाहिए।PHP में अलग-अलग समय क्षेत्रों में स्टोरिंग/प्रदर्शित करने की तारीखों को संभालने का सबसे अच्छा तरीका?
स्थिति
मुझे लगता है कि MySQL में संग्रहीत किया जाएगा एक टिप्पणी पोस्ट करने में सक्षम होने के लिए, कहते हैं, कैलिफोर्निया एक उपयोगकर्ता चाहते हैं। मैं फिर उपयोगकर्ता को अपने समय क्षेत्र में समायोजित पोस्ट डेट के साथ टिप्पणी देखने में सक्षम होना चाहता हूं।
प्रस्तावित समाधान
भंडारण
- भागो आवेदन के शुरू में निम्नलिखित ताकि सभी तिथि कार्यों UTC समयज़ोन का उपयोग करें:
date_default_timezone_set('UTC');
$Date = new DateTime();
साथ दिनांक समय वस्तु प्राप्त करने के लिए यूटीसी में वर्तमान तिथि और समय।- MySQL में डेटाटाइम प्रकार कॉलम में डालने के लिए मान प्राप्त करने के लिए
$Date->format()
का उपयोग करें।
प्रदर्शित
- जावास्क्रिप्ट से उपयोगकर्ता के समय क्षेत्र में जानकारी प्राप्त करें और एक कुकी में संग्रहीत।
- डेटाटाइम कॉलम मान पुनर्प्राप्त करने के लिए एक MySQL SELECT क्वेरी चलाएं।
$Date = new DateTime($row['time']);
संग्रहीत यूटीसी समय के साथ डेटटाइम ऑब्जेक्ट को तुरंत चालू करने के लिए। उपयोगकर्ता के टाइमज़ोन में यूटीसी समय समायोजित करने के लिए$Date->setTimezone(new DateTimeZone($userTimezone));
।$Date->format();
का उपयोग करके प्रदर्शन करता है क्या का सार किया जाना है? क्या मुझे बेहतर समाधान याद आ रहा है? आपकी सहायताके लिए धन्यवाद!
मुझे लगता है कि मैं उपयोगकर्ता लॉगिन पर टाइमज़ोन कुकी सेट करने जा रहा हूं, इसलिए यदि आप ऑस्ट्रेलिया यात्रा करते हैं और वहां से लॉगिन करते हैं तो इसे अपडेट करना चाहिए। क्या आप सुझाव दे रहे हैं कि कुछ जावास्क्रिप्ट पेज लोड पर चलते हैं जो कहते हैं, और उन्हें फ्लाई पर परिवर्तित करता है? –
उपयोगकर्ता घड़ी पर जाने का एकमात्र तरीका जेएस या भू-आईपी के माध्यम से है। लेटर जटिल और अविश्वसनीय है। यदि आप किसी भी मामले में जेएस का उपयोग करने जा रहे हैं, तो इसे लॉगिन समय पर करने के लिए अधिक घर की देखभाल (सर्वर साइड ट्रैकिंग) की आवश्यकता होती है। फ्लाई पर इसे करने से यहां और अधिक समझ आता है। – aleemb
धन्यवाद। जैसे-जैसे मैं इसे और अधिक शोध करता हूं, मैं आपके साथ सहमत होना शुरू कर रहा हूं। –