C++ में दिनांक के साथ कार्य: chrono, date.h और Boost.DateTime लाइब्रेरीज़

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

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

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

C++ में दिनांक के साथ कार्य: आधुनिक लाइब्रेरीज़ का अवलोकन

\n\n

दिनांक और समय के साथ कार्य करना सॉफ्टवेयर विकास में प्रमुख कार्यों में से एक है। C++ में लंबे समय तक कोई सुविधाजनक मानक उपकरण नहीं था, जिसके कारण C-फ़ंक्शन (ctime, localtime) या तृतीय-पक्ष समाधानों का उपयोग होता था। हालाँकि, C++11 मानक और उसके बाद के संस्करणों के आगमन के साथ स्थिति में मौलिक परिवर्तन आया है। इस लेख में, हम C++ में दिनांक के साथ कार्य करने के तीन मुख्य दृष्टिकोणों पर विचार करेंगे: मानक लाइब्रेरी std::chrono, हॉवर्ड हिन्नांट (Howard Hinnant) का date.h एक्सटेंशन और शक्तिशाली फ्रेमवर्क Boost.DateTime।

\n\n

1. मानक लाइब्रेरी std::chrono (C++11 और नया)

\n\n

std::chrono C++ मानक लाइब्रेरी का एक हिस्सा है, जो समय बिंदुओं (time_point), अवधियों (duration) और घड़ियों (clock) को प्रस्तुत करने के लिए प्रकार प्रदान करता है। यह समय अंतराल मापने, टाइमर और उच्च-सटीक विलंबों के साथ कार्य करने के लिए आदर्श है। हालाँकि, C++20 तक इसमें कैलेंडर दिनांक (दिन, महीना, वर्ष) के साथ कार्य करने के लिए सुविधाजनक साधन नहीं थे।

\n\n

उदाहरण: कोड निष्पादन समय मापना

\n
#include <iostream>\n#include <chrono>\n#include <thread>\n\nint main() {\n    auto start = std::chrono::high_resolution_clock::now();\n\n    // कार्य का अनुकरण\n    std::this_thread::sleep_for(std::chrono::milliseconds(500));\n\n    auto end = std::chrono::high_resolution_clock::now();\n    auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);\n\n    std::cout << "निष्पादन समय: " << duration.count() << " मि.से.\\n";\n    return 0;\n}
\n\n

C++20 के साथ, std::chrono में कैलेंडर के लिए समर्थन जोड़ा गया: प्रकार year, month, day, year_month_day और उनके साथ कार्य करने के लिए ऑपरेटर। अब आप लिख सकते हैं:

\n
#include <chrono>\n#include <iostream>\n\nint main() {\n    using namespace std::chrono;\n    auto today = floor<days>(system_clock::now());\n    year_month_day ymd{today};\n    std::cout << int(ymd.year()) << "-" \n              << unsigned(ymd.month()) << "-" \n              << unsigned(ymd.day()) << "\\n";\n    return 0;\n}
\n\n

2. date.h लाइब्रेरी (Howard Hinnant)

\n\n

C++20 के आगमन से पहले, डेवलपर्स date.h लाइब्रेरी का सक्रिय रूप से उपयोग करते थे - यह हॉवर्ड हिन्नांट द्वारा लिखित std::chrono के लिए एक एकल-फ़ाइल एक्सटेंशन है। यह दिनांक के साथ कार्य करने के लिए कार्यों का एक पूरा सेट प्रदान करता है: पार्सिंग, फ़ॉर्मेटिंग, दिनांकों के बीच अंतर की गणना, समय क्षेत्रों के साथ कार्य और यहाँ तक कि जूलियन कैलेंडर के लिए समर्थन।

\n\n

उदाहरण: स्ट्रिंग को दिनांक में पार्स करना

\n
#include "date.h"\n#include <iostream>\n#include <sstream>\n\nint main() {\n    std::istringstream ss("2025-04-07");\n    date::sys_days tp;\n    ss >> date::parse("%F", tp); // ISO 8601 प्रारूप\n    auto ymd = date::year_month_day{tp};\n    std::cout << "वर्ष: " << int(ymd.year()) << "\\n";\n    return 0;\n}
\n\n

उदाहरण: आयु की गणना

\n
#include "date.h"\n#include <iostream>\n\nint main() {\n    using namespace date;\n    auto birth = sys_days{year{1990}/month{1}/day{15}};\n    auto today = floor<days>(std::chrono::system_clock::now());\n    auto age = today - birth;\n    std::cout << "दिनों में आयु: " << age.count() << "\\n";\n    // वर्षों में आयु (लगभग)\n    auto years = duration_cast<std::chrono::years>(age);\n    std::cout << "वर्षों में आयु: " << years.count() << "\\n";\n    return 0;\n}
\n\n

date.h लाइब्रेरी आसानी से जुड़ जाती है (हेडर फ़ाइल को कॉपी करना पर्याप्त है) और इसे बिल्ड करने की आवश्यकता नहीं है। यह C++2

अनुशंसाएँ