जब आप उन्हें आपूर्ति करते हैं तो दिनांक/समय/डेटाटाइम मान MySQL में संग्रहीत होते हैं। अर्थात। अगर आप INSERT
स्ट्रिंग 2012-04-17 12:03:23
एक DATETIME
. में कॉलम, वह मान जो संग्रहीत किया जाएगा। इसे आंतरिक रूप से एक टाइमस्टैम्प में परिवर्तित किया जाएगा जो सटीक हो भी सकता है और नहीं भी (नीचे देखें), लेकिन जब आप फिर से मान के लिए क्वेरी करते हैं, तो आपको वही मान वापस मिल जाएगा; राउंडट्रिप पारदर्शी है।
यदि आप SQL के अंदर समय गणना करने का प्रयास करते हैं तो समस्याएँ हो सकती हैं। अर्थात। कोई भी ऑपरेशन जिसके लिए SQL को टाइमज़ोन और/या सर्वर समय को ध्यान में रखना आवश्यक है। उदाहरण के लिए, NOW()
. का उपयोग करके . इनमें से किसी भी ऑपरेशन के लिए, टाइमज़ोन और/या सर्वर टाइम चाहिए सही ढंग से सेट किया जाए। देखें समय क्षेत्र की समस्याएं
।
यदि यह आपकी चिंता नहीं करता है और आपको केवल PHP में गणना करने की आवश्यकता है, तो आपको केवल यह सुनिश्चित करने की आवश्यकता है कि आप जानते हैं कि आप किस समय क्षेत्र से किस समय क्षेत्र में कनवर्ट करना चाहते हैं। उस उद्देश्य के लिए यह कर सकता है यूटीसी के लिए हर समय मानकीकृत करने के लिए सुविधाजनक हो, लेकिन यह आवश्यक नहीं है, क्योंकि किसी भी समय क्षेत्र से किसी अन्य समय क्षेत्र में समय क्षेत्र रूपांतरण ठीक उसी तरह काम करते हैं, जब तक आप स्पष्ट हैं कि आप किस समय क्षेत्र से और किस समय क्षेत्र में परिवर्तित हो रहे हैं।पी>
date_default_timezone_set('Asia/Tokyo'); // your reference timezone here
$date = date('Y-m-d H:i:s');
/* INSERT $date INTO database */;
$date = /* SELECT date FROM database */;
$usersTimezone = new DateTimeZone('America/Vancouver');
$l10nDate = new DateTime($date);
$l10nDate->setTimeZone($usersTimezone);
echo $l10nDate->format('Y-m-d H:i:s');