PHP में तिथियों के साथ कार्य: पुस्तकालय और उपकरण
तिथियों और समय के साथ कार्य वेब विकास में सबसे सामान्य कार्यों में से एक है। PHP में एक अंतर्निहित क्लास DateTime है, लेकिन इसकी कार्यक्षमता अक्सर जटिल संचालनों के लिए पर्याप्त नहीं होती: समय में अंतर की गणना, स्थानीय भाषा (लोकेल) के अनुसार फ़ॉर्मेटिंग, समय क्षेत्रों के साथ कार्य। विशेष पुस्तकालय मदद के लिए आते हैं। इस लेख में हम PHP में तिथियों के साथ कार्य के लिए सर्वोत्तम उपकरणों पर चर्चा करेंगे।
1. अंतर्निहित क्लास DateTime
तीसरे पक्ष के पुस्तकालयों पर जाने से पहले, मूल समाधान — क्लास DateTime को याद रखना उचित है। यह PHP संस्करण 5.2 से उपलब्ध है और बुनियादी कार्यक्षमता प्रदान करता है:
- तिथि और समय ऑब्जेक्ट बनाना
- फ़ॉर्मेटिंग (
format()के माध्यम से) - तिथि बदलना (
modify()के माध्यम से) - समय क्षेत्रों के साथ कार्य (
DateTimeZone) - तिथियों की तुलना
उपयोग का उदाहरण:
<?php$date = new DateTime('2024-12-31');$date->modify('+1 day');echo $date->format('Y-m-d'); // 2025-01-01?>हालाँकि, DateTime में कमियाँ हैं: अंतरालों के साथ कार्य के लिए सुविधाजनक विधियों का अभाव, मेथड चेनिंग में कठिनाइयाँ, और मानव-पठनीय प्रारूपों के लिए सीमित समर्थन।
2. Carbon — सबसे लोकप्रिय पुस्तकालय
Carbon DateTime का एक विस्तार है, जो एक सुविधाजनक API, मेथड चेनिंग और कई सहायक फ़ंक्शन जोड़ता है। Composer के माध्यम से स्थापना:
composer require nesbot/carbonCarbon की प्रमुख क्षमताएँ:
- मानव-पठनीय विधियाँ:
now(),yesterday(),tomorrow() - स्थानीयकरण (रूसी भाषा के लिए समर्थन)
- अंतरालों के साथ कार्य:
diffForHumans() - चेनिंग के माध्यम से तिथि बदलना:
->addDays(5)->subMonths(2) - तुलना:
isWeekend(),isPast(),isFuture()
रूसी स्थानीयकरण के साथ उदाहरण:
<?phprequire 'vendor/autoload.php';use Carbon\\Carbon;
Carbon::setLocale('ru');$date = Carbon::now();echo $date->diffForHumans(); // "только что" या "3 часа назад"?>Carbon Laravel और कई अन्य परियोजनाओं में तिथियों के साथ कार्य के लिए डी-फैक्टो मानक है।
3. Chronos — हल्का विकल्प
CakePHP का Chronos DateTime का एक और विस्तार है, लेकिन हल्कापन और प्रदर्शन पर ध्यान केंद्रित करता है। स्थापना:
composer require cakephp/chronosCarbon से अंतर:
- कोई निर्भरता नहीं (PHP के अलावा)
- अधिक सख्त टाइपिंग
- डिफ़ॉल्ट रूप से अपरिवर्तनीय (immutable) ऑब्जेक्ट के लिए समर्थन
- कम विधियाँ, लेकिन मुख्य विधियाँ मौजूद हैं
उदाहरण:
<?phpuse Cake\\Chronos\\Chronos;
$date = Chronos::now();$future = $date->addDays(10);echo $future->format('d.m.Y');?>Chronos उन परियोजनाओं के लिए अच्छा है जहाँ कोड की शुद्धता और प्रदर्शन महत्वपूर्ण है, लेकिन व्यापक पारिस्थितिकी तंत्र की आवश्यकता नहीं है।
4. CarbonImmutable और DateTimeImmutable
PHP 5.5 से शुरू करके, क्लास DateTimeImmutable आया, जो मूल ऑब्जेक्ट को नहीं बदलता, बल्कि एक नया ऑब्जेक्ट लौटाता है। Carbon में इसका एनालॉग CarbonImmutable है। यह डेटा के आकस्मिक उत्परिवर्तन को रोकता है:
<?phpuse Carbon\\CarbonImmutable;
$date = CarbonImmutable::now();$newDate = $date->addDay();echo $date->format('Y-m-d'); // मूल नहीं बदला?>यदि तिथियाँ फ़ंक्शन के बीच पास की जाती हैं या कैश में संग्रहीत की जाती हैं, तो immutable संस्करणों का उपयोग करें।
5. League\\Period — अवधियों के साथ कार्य
The League of Extraordinary Packages की लाइब्रेरी Period समय अंतरालों और अवधियों के साथ कार्य के लिए डिज़ाइन की गई है।