PHP में दो तिथियों के बीच अंतर की गणना कैसे करें: शुरुआत से विशेषज्ञ तक
\n\nक्या आपने कभी सोचा है: «मेरी आखिरी छुट्टी को कितने दिन हुए?» या «साइट पर ऑफर कितने घंटे में खत्म होगा?»? यदि आप PHP डेवलपर हैं, तो ये प्रश्न एक ही कार्य में बदल जाते हैं: दो तिथियों के बीच अंतर की गणना कैसे करें।
\n\nयह प्रश्न Stack Overflow पर हजारों बार देखे जाने वाले सबसे लोकप्रिय प्रश्नों में से एक है। और यह कोई संयोग नहीं है: PHP में तिथियों के साथ काम करना मुश्किल हो सकता है। लीप वर्ष, समय क्षेत्र, अलग-अलग प्रारूप - ये सब सबसे सोच-समझकर लिखे गए कोड को भी तोड़ सकते हैं।
\n\nइस लेख में, हम PHP में तिथियों के बीच अंतर की गणना करने के 5 सिद्ध तरीकों पर चर्चा करेंगे - सबसे सरल से लेकर पेशेवर तक। आप जानेंगे कि कब किस विधि का उपयोग करना है, और आपको तैयार कोड उदाहरण मिलेंगे।
\n\n1. क्लासिक विधि: strtotime() और सरल अंकगणित
\n\nसबसे पुराना और सहज तरीका - तिथियों को strtotime() फ़ंक्शन का उपयोग करके Unix टाइमस्टैम्प में बदलना और फिर एक संख्या को दूसरे से घटाना है।
<?php\n$date1 = strtotime('2024-01-15');\n$date2 = strtotime('2024-03-20');\n\n$diff_seconds = $date2 - $date1;\n$diff_days = floor($diff_seconds / (60 * 60 * 24));\n\necho "दिनों में अंतर: " . $diff_days; // आउटपुट: 65\n?>\n\nलाभ: सरलता, PHP के किसी भी संस्करण में काम करता है।
\nनुकसान: समय क्षेत्रों को ध्यान में नहीं रखता, 1970 से पहले की तिथियों के साथ समस्या, महीनों और वर्षों के लिए कोई अंतर्निहित समर्थन नहीं (क्योंकि उनकी लंबाई अलग-अलग होती है)।
\n\nयह विधि त्वरित गणनाओं के लिए उपयुक्त है, लेकिन गंभीर प्रोजेक्ट्स के लिए अधिक आधुनिक टूल का उपयोग करना बेहतर है।
\n\n2. आधुनिक मानक: DateTime क्लास और diff() विधि
\n\nPHP 5.2 से शुरू करके, हमारे पास शक्तिशाली DateTime क्लास है। यह तिथियों के साथ काम करने के लिए एक वास्तविक स्विस आर्मी चाकू है। diff() विधि एक DateInterval ऑब्जेक्ट लौटाती है, जिसमें अंतर के बारे में सारी जानकारी होती है।
<?php\n$date1 = new DateTime('2024-01-15');\n$date2 = new DateTime('2024-03-20');\n\n$interval = $date1->diff($date2);\n\necho "अंतर: " . $interval->days . " दिन"; // 65\necho "या " . $interval->m . " महीने और " . $interval->d . " दिन"; // 2 महीने और 5 दिन\n?>\n\nDateInterval निम्नलिखित गुणों तक पहुँच प्रदान करता है:
\n- \n
y— वर्ष \n m— महीने \n d— दिन \n h— घंटे \n i— मिनट \n s— सेकंड \n days— कुल दिनों की संख्या (सबसे उपयोगी!) \n invert— फ़्लैग: 0 यदि पहली तिथि पहले है, 1 यदि बाद में है \n
यह विधि लीप वर्षों को ध्यान में रखती है और विभिन्न कैलेंडर विशेषताओं के साथ सही ढंग से काम करती है। PHP के आधिकारिक दस्तावेज़ में इसकी सिफारिश की गई है।
\n\n3. अंतर को फ़ॉर्मेट करना: «2 वर्ष 3 महीने 10 दिन» कैसे दिखाएँ
\n\nअक्सर केवल एक संख्या प्राप्त करना ही नहीं, बल्कि उपयोगकर्ता के लिए अंतर को खूबसूरती से फ़ॉर्मेट करना भी आवश्यक होता है। DateInterval ऑब्जेक्ट की format() विधि इसमें मदद करती है।
<?php\n$birthday = new DateTime('1990-05-15');\n$today = new DateTime();\n\n$age = $birthday->diff($today);\n\necho $age->format('%y वर्ष %m महीने %d दिन');\n// उदाहरण: 34 वर्ष 2 महीने 3 दिन\n?>\n\nफ़ॉर्मेट निर्दिष्टकर्ता:
\n- \n
%y— वर्ष \n %m— महीने \n %d— दिन \n %h— घंटे \n %i— मिनट \n %s— सेकंड \n %a— कुल दिनों की संख्या (daysका विकल्प) \n %r— यदि अंतर ऋणात्मक है तो "माइनस" चिह्न \n
«दिन/दिनों» शब्दों का विभक्ति चाहते हैं? आपको अपना स्वयं का तर्क लिखना होगा।