C++ में दिनांकों के साथ कार्य: समय हेरफेर के लिए सर्वश्रेष्ठ पुस्तकालयों का अवलोकन

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

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

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

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 के साथ काम करता है।

अनुशंसाएँ