C++ में दिनांकों के साथ कार्य: प्रमुख पुस्तकालयों का अवलोकन
दिनांक और समय के साथ कार्य प्रोग्रामिंग में मूलभूत कार्यों में से एक है। C++ में, मानक पुस्तकालय लंबे समय तक C (<ctime>) की उपयोगिताओं तक सीमित था, जो प्रकार के दृष्टिकोण से असुविधाजनक और असुरक्षित हैं। C++11 और विशेष रूप से C++20 से शुरू होकर, स्थिति मौलिक रूप से बदल गई है। इस लेख में, हम आधुनिक C++ में दिनांकों के साथ कार्य के तीन मुख्य दृष्टिकोणों पर विचार करेंगे।
1. मानक पुस्तकालय <chrono> (C++11 और C++20)
C++11 से शुरू होकर, मानक पुस्तकालय में हेडर <chrono> शामिल किया गया, जो प्रकार-सुरक्षित घड़ियाँ, समय बिंदु (time_point) और अवधि (duration) प्रदान करता है। C++20 में, पुस्तकालय को कैलेंडर प्रकारों (वर्ष, महीना, दिन) और समय क्षेत्रों के समर्थन के साथ विस्तारित किया गया।
मुख्य घटक:
std::chrono::system_clock— सिस्टम घड़ी, वास्तविक समय से जुड़ी हुई।std::chrono::steady_clock— अंतराल मापने के लिए मोनोटोनिक घड़ी।std::chrono::duration— समय अंतराल (उदाहरण के लिए, सेकंड, मिलीसेकंड)।std::chrono::time_point— समय में एक बिंदु।- कैलेंडर प्रकार (C++20):
year_month_day,hh_mm_ssऔर अन्य।
#include <iostream>#include <chrono>#include <format> // C++20
int main() { using namespace std::chrono;
// वर्तमान समय auto now = system_clock::now(); std::cout << "वर्तमान समय: " << now << "";
// कैलेंडर दिनांक में रूपांतरण (C++20) auto dp = floor<days>(now); year_month_day ymd{dp}; std::cout << "वर्ष: " << (int)ymd.year() << "";
// अंतराल मापना auto start = steady_clock::now(); // ... कुछ कोड ... auto end = steady_clock::now(); auto diff = end - start; std::cout << "बीता: " << duration_cast<milliseconds>(diff).count() << " मि.से."; return 0;}लाभ: मानक में निर्मित, प्रकार-सुरक्षित, सक्रिय रूप से विकसित हो रहा है।
नुकसान: C++20 के लिए आधुनिक कंपाइलर की आवश्यकता है (GCC 12+, Clang 14+, MSVC 2022)।
2. Boost.DateTime
Boost.DateTime पुस्तकालय दिनांकों के साथ कार्य के लिए सबसे पुराने और सबसे परिपक्व पुस्तकालयों में से एक है। C++20 के आगमन से पहले, यह वास्तविक मानक था। यह boost::gregorian::date, boost::posix_time::ptime वर्ग और समय क्षेत्रों का पूर्ण समर्थन प्रदान करता है।
मुख्य क्षमताएँ:
- लीप वर्षों के समर्थन के साथ ग्रेगोरियन कैलेंडर।
- दिनांकों के साथ हेरफेर: दिन, महीने, वर्ष जोड़ना।
boost::date_time::date_facetके माध्यम से स्वरूपण और पार्सिंग।boost::local_timeके माध्यम से समय क्षेत्रों का समर्थन।
#include <iostream>#include <boost/date_time/gregorian/gregorian.hpp>#include <boost/date_time/posix_time/posix_time.hpp>
int main() { using namespace boost::gregorian; using namespace boost::posix_time;
// दिनांक बनाना date d(2024, 12, 25); std::cout << "दिनांक: " << d << ""; // 2024-Dec-25
// दिन जोड़ना date next_week = d + days(7); std::cout << "एक सप्ताह बाद: " << next_week << "";
// दिनांकों के बीच अंतर days diff = next_week - d; std::cout << "अंतर: " << diff.days() << " दिन";
// सेकंड तक सटीक वर्तमान समय ptime now = second_clock::local_time(); std::cout << "अब: " << now << ""; return 0;}लाभ: समय-परीक्षित, व्यापक दस्तावेज़ीकरण, C++98 के साथ काम करता है।
पुस्तकालय में भी
ts-pattern TypeScript: पूर्ण गाइड उदाहरणों के साथ
C# में इमेज प्रोसेसिंग: रीसाइज़ और क्रॉप (resize, crop) करना सीखें
Node.js में कार्य कतारें: Bull, Bee-Queue, Kue और Redis पर कार्यान्वयन
TypeStack/class-validator TypeScript: पूरी गाइड उदाहरणों के साथ