समय किसी का इंतजार नहीं करता: PHP में तिथियों के साथ सब कुछ जटिल क्यों है (और इसे कैसे ठीक करें)
\n\nकल्पना करें: आप एक ब्लॉग, ऑनलाइन स्टोर या व्यक्तिगत खाता लिख रहे हैं। और अचानक आपको एहसास होता है — आपको उपयोगकर्ता को दिखाना होगा कि लेख कब प्रकाशित हुआ, ऑर्डर कब दिया गया या संदेश कब भेजा गया। यह सोचना आसान है, इससे आसान क्या हो सकता है? date() फ़ंक्शन लें — और हो गया।
लेकिन शैतान, हमेशा की तरह, विवरण में है। 2025 में, PHP डेवलपर्स अभी भी वही गलतियाँ कर रहे हैं: वे समय क्षेत्रों को भ्रमित करते हैं, वस्तुओं की अपरिवर्तनीयता के बारे में भूल जाते हैं, पुराने फ़ंक्शन का उपयोग करते हैं। और फिर वे आश्चर्य करते हैं कि साइट पर समय "कूद" क्यों रहा है और परीक्षण क्यों विफल हो रहे हैं।
\n\nइस लेख में, हम PHP में दिनांक और समय के साथ काम करने के सर्वोत्तम अभ्यासों पर चर्चा करेंगे — सरल समाधान से लेकर पेशेवर तकनीकों तक। आप सीखेंगे कि वर्तमान दिनांक कैसे प्राप्त करें, समय क्षेत्रों के साथ कैसे काम करें और टाइमस्टैम्प के साथ काम करते समय खुद को कैसे नुकसान न पहुँचाएँ।
\n\n1. सबसे आसान तरीका: date() फ़ंक्शन
\n\nक्लासिक से शुरू करते हैं। date() फ़ंक्शन वह है जहाँ से 90% शुरुआती लोग शुरू करते हैं। यह दो पैरामीटर लेता है: आउटपुट फॉर्मेट और (वैकल्पिक) timestamp। यदि timestamp निर्दिष्ट नहीं है, तो सर्वर का वर्तमान समय उपयोग किया जाता है।
echo date('Y-m-d H:i:s');\n// आउटपुट: 2025-04-08 14:35:12\n\nयहाँ सबसे लोकप्रिय फॉर्मेट हैं:
\n- \n
Y— वर्ष (4 अंक) \n m— महीना (01–12) \n d— महीने का दिन (01–31) \n H— 24-घंटे के प्रारूप में घंटे \n i— मिनट \n s— सेकंड \n
समस्या: date() php.ini में date.timezone सेटिंग पर निर्भर करता है। यदि आपने समय क्षेत्र सेट नहीं किया है, तो PHP सर्वर के सिस्टम समय का उपयोग करेगा। और सर्वर एक अलग समय क्षेत्र में हो सकता है — और तब आपके उपयोगकर्ता गलत समय देखेंगे।
2. पेशेवर दृष्टिकोण: DateTime क्लास
\n\nPHP 5.2 से शुरू करके, हमारे पास DateTime क्लास है। यह तिथियों के साथ काम करने का एक ऑब्जेक्ट-ओरिएंटेड तरीका है, जो date() और time() फ़ंक्शन की तुलना में अधिक लचीला और सुरक्षित है।
$now = new DateTime();\necho $now->format('Y-m-d H:i:s');\n// आउटपुट: 2025-04-08 14:35:12\n\nDateTime के लाभ:
\n- \n
- कंस्ट्रक्टर के माध्यम से आसानी से समय क्षेत्र सेट किया जा सकता है \n
- दिनांक संशोधन का समर्थन करता है (दिन, महीने जोड़ें) \n
- तिथियों की आपस में तुलना कर सकता है \n
- अंतराल के साथ काम करता है \n
समय क्षेत्र के साथ उदाहरण:
\n\n$now = new DateTime('now', new DateTimeZone('Europe/Moscow'));\necho $now->format('Y-m-d H:i:s');\n// आउटपुट: 2025-04-08 17:35:12 (MSK, UTC+3)\n\n2.1. DateTimeImmutable — आपका नया सबसे अच्छा दोस्त
\n\nPHP 5.5 में DateTimeImmutable आया। सामान्य DateTime से इसका मुख्य अंतर: यह स्वयं को संशोधित नहीं करता। इसके बजाय, प्रत्येक विधि (जैसे modify() या add()) एक नई वस्तु लौटाती है।
$date = new DateTimeImmutable();\n$modified = $date->modify('+1 day');\n\necho $date->format('Y-m-d'); // 2025-04-08 (बदला नहीं!)\necho $modified->format('Y-m-d'); // 2025-04-09 (नई वस्तु)\n\nयह क्यों महत्वपूर्ण है? क्योंकि सामान्य DateTime एक संदर्भ-वस्तु है। यदि आप इसे किसी फ़ंक्शन में पास करते हैं और वहाँ इसे बदलते हैं, तो मूल भी बदल जाएगा। Immutable के साथ ऐसी कोई समस्या नहीं है। 2025 में, इसे गंभीर परियोजनाओं के लिए वास्तविक मानक माना जाता है।
\n\n3. टाइमस्टैम्प कैसे प्राप्त करें: time() बनाम DateTime
\n\nकभी-कभी आपको दिनांक नहीं, बल्कि Unix timestamp चाहिए — 1 जनवरी 1970 से सेकंड की संख्या। PHP दो रास्ते प्रदान करता है:
\n\n// पुराना तरीका\necho time(); // 1744112112\n\n// नया तरीका\necho (new DateTime())->getTimestamp(); // 1744112112\n\nसरल कार्यों के लिए, time() पूरी तरह से पर्याप्त है