PHP में तारीखों के बीच अंतर: शुरुआत से विशेषज्ञ तक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP में दो तारीखों के बीच अंतर कैसे निकालें: उदाहरणों के साथ पूरी गाइड

\n\n

क्या आपने कभी सोचा है: "यूज़र के रजिस्टर हुए कितने दिन हो गए?", "जन्मतिथि से उम्र कैसे निकालें?" या "ऑफर खत्म होने में कितने घंटे बाकी हैं?" अगर हाँ, तो आपने ज़रूर सोचा होगा: PHP में दो तारीखों के बीच अंतर कैसे निकालें? यह Stack Overflow पर सबसे पॉपुलर सवालों में से एक है, और सही भी है: तारीखों के साथ काम करना बुनियादी लेकिन मुश्किल हो सकता है।

\n\n

इस लेख में हम तीन मुख्य तरीके सीखेंगे: पुराना strtotime(), आधुनिक ऑब्जेक्ट-ओरिएंटेड DateTime और पावरफुल थर्ड-पार्टी पैकेज Carbon। आप सिर्फ "कैसे करें" नहीं, बल्कि यह भी जानेंगे कि आपके काम के लिए कौन सा तरीका सबसे अच्छा है। चलिए शुरू करते हैं!

\n\n

तारीखों को सीधा घटाना क्यों गलत है?

\n\n

नए डेवलपर्स अक्सर ऐसा करने की कोशिश करते हैं:

\n\n
<?php\n$date1 = '2024-01-15';\n$date2 = '2024-01-10';\n$diff = $date2 - $date1; // गलती! स्ट्रिंग को घटाया नहीं जा सकता\n?>\n
\n\n

PHP स्ट्रिंग को घटाना नहीं जानता, भले ही वे तारीख जैसी दिखें। इसका नतीजा 0 या एक चेतावनी होगी। भले ही आप strtotime() का उपयोग करके Unix टाइमस्टैम्प निकाल लें, सीधा सेकंड घटाने से आपको सिर्फ सेकंड मिलेंगे, "2 दिन 3 घंटे 15 मिनट" जैसा फॉर्मेट नहीं। इसके लिए खास टूल्स चाहिए।

\n\n

तरीका 1: पुराना तरीका — strtotime() और मैन्युअल कैलकुलेशन

\n\n

यह तरीका उन सभी को पता है जिन्होंने PHP 4 या 5 से शुरुआत की। फंक्शन strtotime() तारीख के टेक्स्ट को Unix टाइमस्टैम्प (1 जनवरी 1970 से सेकंड) में बदलता है। फिर हम टाइमस्टैम्प घटाते हैं और सेकंड को दिनों में बदलते हैं।

\n\n

उदाहरण: दिनों में अंतर

\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- महीनों या सालों में अंतर निकालने के लिए लीप ईयर वाली जटिल लॉजिक लिखनी पड़ती है।

\n\n

कब उपयोग करें: सिर्फ मोटे-मोटे कैलकुलेशन के लिए (जैसे "30 दिन से ज़्यादा हुए?") या पुराने कोड में।

\n\n

तरीका 2: DateTime और DateInterval — आधुनिक PHP स्टैंडर्ड

\n\n

PHP 5.2 से, भाषा में शक्तिशाली DateTime क्लास आया। DateInterval के साथ मिलकर यह तारीखों से जुड़े 95% काम हल करता है। PHP में दो तारीखों के बीच अंतर निकालने का यह सबसे सुझाया गया तरीका है।

\n\n

बेसिक उदाहरण: दिनों, महीनों और सालों में अंतर

\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

अलग-अलग कंपोनेंट्स तक पहुंच

\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\n

days प्रॉपर्टी पर ध्यान दें — यह इंटरवल में कुल दिनों की संख्या है (d से अलग, जो सिर्फ दिन दिखाता है)।

ब्लॉग

पुस्तक अनुशंसाएँ