PHP में दो तारीखों के बीच अंतर कैसे निकालें: उदाहरणों के साथ पूरी गाइड
\n\nक्या आपने कभी सोचा है: "यूज़र के रजिस्टर हुए कितने दिन हो गए?", "जन्मतिथि से उम्र कैसे निकालें?" या "ऑफर खत्म होने में कितने घंटे बाकी हैं?" अगर हाँ, तो आपने ज़रूर सोचा होगा: PHP में दो तारीखों के बीच अंतर कैसे निकालें? यह Stack Overflow पर सबसे पॉपुलर सवालों में से एक है, और सही भी है: तारीखों के साथ काम करना बुनियादी लेकिन मुश्किल हो सकता है।
\n\nइस लेख में हम तीन मुख्य तरीके सीखेंगे: पुराना strtotime(), आधुनिक ऑब्जेक्ट-ओरिएंटेड DateTime और पावरफुल थर्ड-पार्टी पैकेज Carbon। आप सिर्फ "कैसे करें" नहीं, बल्कि यह भी जानेंगे कि आपके काम के लिए कौन सा तरीका सबसे अच्छा है। चलिए शुरू करते हैं!
तारीखों को सीधा घटाना क्यों गलत है?
\n\nनए डेवलपर्स अक्सर ऐसा करने की कोशिश करते हैं:
\n\n<?php\n$date1 = '2024-01-15';\n$date2 = '2024-01-10';\n$diff = $date2 - $date1; // गलती! स्ट्रिंग को घटाया नहीं जा सकता\n?>\n\n\nPHP स्ट्रिंग को घटाना नहीं जानता, भले ही वे तारीख जैसी दिखें। इसका नतीजा 0 या एक चेतावनी होगी। भले ही आप strtotime() का उपयोग करके Unix टाइमस्टैम्प निकाल लें, सीधा सेकंड घटाने से आपको सिर्फ सेकंड मिलेंगे, "2 दिन 3 घंटे 15 मिनट" जैसा फॉर्मेट नहीं। इसके लिए खास टूल्स चाहिए।
तरीका 1: पुराना तरीका — strtotime() और मैन्युअल कैलकुलेशन
\n\nयह तरीका उन सभी को पता है जिन्होंने PHP 4 या 5 से शुरुआत की। फंक्शन strtotime() तारीख के टेक्स्ट को Unix टाइमस्टैम्प (1 जनवरी 1970 से सेकंड) में बदलता है। फिर हम टाइमस्टैम्प घटाते हैं और सेकंड को दिनों में बदलते हैं।
उदाहरण: दिनों में अंतर
\n\n<?php\n$date1 = strtotime('2024-12-25');\n$date2 = strtotime('2024-12-20');\n\n$seconds_diff = $date1 - $date2;\n$days_diff = floor($seconds_diff / (60 * 60 * 24));\n\necho "अंतर: $days_diff दिन"; // आउटपुट: अंतर: 5 दिन\n?>\n\n\nफायदे: सरल, ऑब्जेक्ट की ज़रूरत नहीं, तेज़ काम करता है।
\n\nनुकसान:
\n- टाइमज़ोन का सपोर्ट नहीं (हमेशा UTC)।
\n- डेलाइट सेविंग टाइम में 1 घंटे की गलती हो सकती है (और इसलिए 1 दिन की भी)।
\n- महीनों या सालों में अंतर निकालने के लिए लीप ईयर वाली जटिल लॉजिक लिखनी पड़ती है।
कब उपयोग करें: सिर्फ मोटे-मोटे कैलकुलेशन के लिए (जैसे "30 दिन से ज़्यादा हुए?") या पुराने कोड में।
\n\nतरीका 2: DateTime और DateInterval — आधुनिक PHP स्टैंडर्ड
\n\nPHP 5.2 से, भाषा में शक्तिशाली DateTime क्लास आया। DateInterval के साथ मिलकर यह तारीखों से जुड़े 95% काम हल करता है। PHP में दो तारीखों के बीच अंतर निकालने का यह सबसे सुझाया गया तरीका है।
बेसिक उदाहरण: दिनों, महीनों और सालों में अंतर
\n\n<?php\n$date1 = new DateTime('2024-01-15');\n$date2 = new DateTime('2023-11-10');\n$interval = $date1->diff($date2);\n\necho $interval->format('%y साल, %m महीने, %d दिन');\n// आउटपुट: 0 साल, 2 महीने, 5 दिन\n?>\n\n\nजादू यह है कि diff() खुद लीप ईयर, महीनों के अलग-अलग दिन और टाइमज़ोन (अगर सेट हों) को ध्यान में रखता है।
अलग-अलग कंपोनेंट्स तक पहुंच
\n\n<?php\n$date1 = new DateTime('2024-12-25');\n$date2 = new DateTime('2024-01-01');\n$interval = $date1->diff($date2);\n\necho "साल: " . $interval->y . "<br>";\necho "महीने: " . $interval->m . "<br>";\necho "दिन: " . $interval->d . "<br>";\necho "कुल दिन (total): " . $interval->days . "<br>";\n// आउटपुट:\n// साल: 0\n// महीने: 11\n// दिन: 24\n// कुल दिन (total): 359\n?>\n\n\ndays प्रॉपर्टी पर ध्यान दें — यह इंटरवल में कुल दिनों की संख्या है (d से अलग, जो सिर्फ दिन दिखाता है)।