2009-01-10 16 views
5

मेरा सर्वर डलास में है। मैं न्यूयॉर्क शहर में हूं .. और PHP और MySQL दोनों में टाइमज़ोन सेट करने के लिए कॉन्फ़िगरेशन चर हैं।PHP, MySQL, आदि में तिथियों को प्रबंधित करने का सबसे अच्छा तरीका क्या है?

मैं उन्हें सभी को एक साथ काम करने के लिए कैसे प्राप्त करूं? MySQL में मुझे किस तारीख को स्टोर करना चाहिए? मैं उपयोगकर्ता की वरीयता के आधार पर तिथि बदलने को संभालने के लिए PHP कैसे प्राप्त करूं?

ध्यान रखें: मुझे नहीं लगता कि मैं कभी भी PHP को स्पष्ट रूप से दिनांक निर्धारित कर रहा हूं, यह हमेशा प्रश्नों में "अब()" का उपयोग कर रहा है .. हालांकि मुझे ऐसा करने की आवश्यकता है। यह कैसे किया जाएगा?

मुझे उम्मीद है कि एसओ का अनुभव यहां मेरी मदद कर सकता है।

उत्तर

0

जीएमटी (शून्य ऑफ़सेट) में अपनी तिथियां रिकॉर्ड करें और फिर स्थानीय टाइमज़ोन के आधार पर ऑफसेट की गणना करें (उदाहरण के लिए ईएसटी +6 है, तो आप जीएमटी में 6 घंटे जोड़ देंगे)।

date_default_timezone_set() फ़ंक्शन के लिए Date docs देखें।

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

+0

आपका उत्तर पर्याप्त स्पष्ट नहीं है। कॉन्फ़िगरेशन के लिए कई चीजें हैं: PHP का टाइमज़ोन, MySQL का टाइमज़ोन, और सर्वर टाइमज़ोन। क्या आप कह रहे हैं कि मुझे जीएमटी होने के लिए MySQL का टाइमज़ोन सेट करना चाहिए? –

+0

मुझे खेद है, लेकिन मुझे अभी भी समझ में नहीं आता कि आप यहां क्या प्राप्त कर रहे हैं। क्या आप एक उदाहरण प्रदान कर सकते हैं, जहां उपयोगकर्ता अपना टाइमज़ोन निर्दिष्ट करता है और सर्वर स्थित है, ओह मान लें, डलास। –

+0

आपको 0 जीएमटी ऑफ़सेट में कनवर्ट करने के लिए डलास टाइमज़ोन (मान लें कि सर्वर उस टाइमज़ोन पर सेट है) का उपयोग करने की आवश्यकता है। फिर यदि कोई उपयोगकर्ता एक NYZ को टाइमज़ोन के रूप में निर्दिष्ट करता है तो 0 जीएमटी ऑफसेट को ईएसटी में परिवर्तित करना आसान होता है। – null

16

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

वैकल्पिक रूप से आप यूनिक्स समय का उपयोग केवल एक कंप्यूटर से दूसरे कंप्यूटर में स्थानांतरित करने के लिए कर सकते हैं (जैसे डीबी से आपके सर्वर को PHP, या जावास्क्रिप्ट क्लाइंट में)। प्रत्येक भाषा में इसे और उससे परिवर्तित करने के लिए कार्य हैं। MySQL के लिए यह है:

UNIX_TIMESTAMP(date) 
FROM_UNIXTIME(unix_timestamp) 

इस तरह आप अपने समय ठीक से डीबी पर और लॉग में स्वरूपित लेकिन अभी भी सही स्थानीय समय हर जगह है हो सकता था।

+0

अधिक सहमत नहीं हो सका। –

+1

मैं इसे कैसे कार्यान्वित करूं? MySQL में अब(), टाइमज़ोन –

+0

UNIX_TIMESTAMP() ... को ध्यान में रखता है। एकमात्र समस्या यह है कि मुझे DATETIME का उपयोग करना पसंद है क्योंकि यह देखने के लिए अच्छा है, इसमें 2038 बग नहीं है। –

0

mysql-server स्टोर टाइमज़ोन स्वतंत्र प्रारूप (यूटीसी) में दिनांक रखता है।
लेकिन इससे पहले कि यह तारीख को संग्रहीत करता है, इसे अपने टाइमज़ोन का उपयोग करके परिवर्तित किया जाएगा।

यू कनेक्शन * 1 प्रति mysql समय क्षेत्र बदलने के कर सकते हैं:

mysql_query('SET time_zone = "'.$timezone.'"'); 

तुम भी स्क्रिप्ट प्रति समय क्षेत्र बदलने के कर सकते हैं।

date_default_timezone_set($timezone); 

आप एक ही समय-क्षेत्र पर उन्हें सेट करते हैं "2009-01-10 13:30:00" दोनों mysql और php के लिए एक ही बात का मतलब होगा।

लेकिन ध्यान रखें कि 2 सर्वरों में अलग-अलग आंतरिक घड़ी मान हैं, इसलिए यदि आप वर्तमान समय के आधार पर टाइमस्टैम्प जेनरेट करना चाहते हैं। MySQL या php में ऐसा करें।

* 1) MySQL टाइमज़ोन समर्थन अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता हो सकती है। manual

2

मैं पर्यावरण के संबंध में मूल रूप में दिनांक और समय का उपयोग करना पसंद करता हूं, अर्थात, PHP में यूनिक्स टाइमस्टैम्प और MySQL में DATE/TIME/DATETIME/TIMESTAMP फ़ील्ड। मैं FROM_UNIXTIME() और UNIX_TIMESTAMP() का उपयोग करके दोनों मानों को दूसरे में अनुवाद करता हूं। मैं यूनिक्स टाइमस्टैम्प के बजाय इसे पसंद करता हूं, क्योंकि देशी तिथियां/समय पढ़ने के लिए बहुत आसान होते हैं।

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

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