PHP में तिथियों के साथ काम करना: सर्वश्रेष्ठ पुस्तकालय और उपकरण
\nतिथियों और समय का प्रसंस्करण वेब विकास में सबसे सामान्य कार्यों में से एक है। PHP शक्तिशाली अंतर्निहित उपकरण प्रदान करता है, लेकिन जटिल परियोजनाओं के लिए अक्सर अधिक सुविधाजनक पुस्तकालयों की आवश्यकता होती है। इस लेख में, हम PHP में तिथियों के साथ काम करने के मुख्य तरीकों का विश्लेषण करेंगे, लोकप्रिय पुस्तकालयों की तुलना करेंगे और व्यावहारिक उदाहरण दिखाएंगे।
\n\nअंतर्निहित PHP क्लासेस: DateTime और DateTimeImmutable
\nसंस्करण 5.2 से शुरू करके, PHP में तिथियों के साथ काम करने के लिए ऑब्जेक्ट-ओरिएंटेड क्लासेस शामिल हैं। इनमें से मुख्य हैं:
\n- \n
DateTime— परिवर्तनीय तिथि/समय ऑब्जेक्ट \n DateTimeImmutable— अपरिवर्तनीय एनालॉग (संदर्भ द्वारा पास करने पर अधिक सुरक्षित) \n DateInterval— समय अंतराल का प्रतिनिधित्व \n DatePeriod— निर्दिष्ट अंतराल के साथ तिथियों पर पुनरावृत्ति \n
तिथि बनाने और स्वरूपित करने का उदाहरण:
\n<?php\n$date = new DateTime('2024-12-25 10:30:00');\necho $date->format('Y-m-d H:i:s'); // 2024-12-25 10:30:00\n\n// 1 सप्ताह जोड़ना\n$date->modify('+1 week');\necho $date->format('Y-m-d'); // 2025-01-01\n?>\n\nCarbon — Laravel के लिए डी-फैक्टो मानक
\nCarbon DateTime क्लास का एक विस्तार है, जो दर्जनों सुविधाजनक विधियाँ जोड़ता है। यह पुस्तकालय Laravel और Symfony में सक्रिय रूप से उपयोग किया जाता है। Composer के माध्यम से स्थापना:
\ncomposer require nesbot/carbon\n\nCarbon की मुख्य क्षमताएँ:
\n- \n
- मानव-समझने योग्य संशोधक:
->addDay(),->subMonth(),->startOfWeek()\n - स्थानीयकरण:
Carbon::setLocale('ru')\n - सापेक्ष तिथियाँ:
->diffForHumans()("3 घंटे पहले", "2 दिन बाद" लौटाएगा) \n - प्राकृतिक भाषा पार्सिंग:
Carbon::parse('next monday')\n
Carbon के उपयोग का उदाहरण:
\n<?php\nuse Carbon\\Carbon;\n\n$now = Carbon::now('Europe/Moscow');\necho $now->toDateString(); // 2025-03-15\n\n$birthday = Carbon::create(1990, 5, 20);\necho $birthday->age; // 34\n\n// तिथियों के बीच अंतर\n$start = Carbon::parse('2024-01-01');\n$end = Carbon::parse('2024-12-31');\necho $start->diffInDays($end); // 365\n\n// सापेक्ष तिथि\necho Carbon::parse('-1 week')->diffForHumans(); // "1 सप्ताह पहले"\n?>\n\nChronos — CakePHP से विकल्प
\nChronos एक स्वतंत्र पुस्तकालय है, जिसे CakePHP डेवलपर्स द्वारा बनाया गया है। इसका मुख्य अंतर डिफ़ॉल्ट रूप से अपरिवर्तनीयता है (DateTimeImmutable की तरह)। विशेषताएँ:
- \n
- सभी ऑब्जेक्ट अपरिवर्तनीय हैं — मल्टी-थ्रेडेड वातावरण के लिए अधिक सुरक्षित \n
- डेलाइट सेविंग टाइम को ध्यान में रखते हुए समय क्षेत्रों का समर्थन \n
- सुविधाजनक राउंडिंग विधियाँ:
->startOfDay(),->endOfMonth()\n - हल्का वजन (कोई निर्भरता नहीं) \n
Chronos के साथ काम करने का उदाहरण:
\n<?php\nuse Cake\\Chronos\\Chronos;\n\n$date = Chronos::now();\necho $date->addDays(10)->format('d.m.Y'); // 25.03.2025\n\n// सटीकता निर्दिष्ट करने के साथ अंतर\n$future = Chronos::create(2025, 12, 31);\necho $date->diffInDays($future); // 291\n\n// तिथि की जाँच\necho $date->isWeekend() ? 'सप्ताहांत' : 'कार्यदिवस';\n?>\n\nCakePHP Time — समय क्षेत्रों के साथ काम करने के लिए
\nCakePHP से एक और उपकरण — Cake\\I18n\\Time। यह Chronos का विस्तार करता है और अंतर्राष्ट्रीयकरण समर्थन जोड़ता है। यह तब उपयोगी होता है जब आपको विभिन्न भाषाओं में तिथियाँ प्रदर्शित करने की आवश्यकता होती है:
\n<?php\nuse Cake\\I18n\\Time;\n\nTime::setDefaultLocale('ru_RU');\n$time = Time::parse('2025-03-15 14:30:00', 'Europe/Moscow');\necho $time->i18nFormat('dd MMMM yyyy'); // 15 марта 2025\n?>\n\nपुस्तकालयों की तुलना
\nउपयुक्त पुस्तकालय चुनने के लिए, निम्नलिखित मानदंडों पर ध्यान दें:
\n- \n
- Carbon — Laravel परियोजनाओं के लिए सबसे अच्छा विकल्प