C++ में तिथियों के साथ कार्य: समय हेरफेर के लिए लाइब्रेरीज़ का अवलोकन

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

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

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

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



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



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



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



मुख्य घटक:

  • घड़ियाँ (Clocks): system_clock (सिस्टम समय), steady_clock (माप के लिए एकसमान समय), high_resolution_clock (आमतौर पर पहले दो में से किसी एक का उपनाम)।
  • अवधियाँ (Durations): std::chrono::seconds, milliseconds, microseconds आदि। अंकगणितीय संचालन करने की अनुमति देता है।
  • समय बिंदु (Time points): घड़ी के एक विशिष्ट प्रारंभ बिंदु (युग) से अवधि का जुड़ाव।


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

#include <iostream>#include <chrono>#include <thread>

int main() { auto start = std::chrono::high_resolution_clock::now(); std::this_thread::sleep_for(std::chrono::milliseconds(500)); auto end = std::chrono::high_resolution_clock::now(); auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start); std::cout << "निष्पादन समय: " << duration.count() << " मि.से."; return 0;}


यह कोड मिलीसेकंड सटीकता के साथ सटीक समय माप प्रदर्शित करता है। कैलेंडर तिथियों के साथ कार्य करने के लिए, C++20 में नई क्षमताएँ सामने आई हैं, लेकिन यदि आप पुराने मानक का उपयोग कर रहे हैं, तो निम्नलिखित लाइब्रेरीज़ आपके काम आएँगी।



2. Howard Hinnant द्वारा "date" लाइब्रेरी (C++20 का पूर्ववर्ती)



C++20 के आगमन से पहले, Howard Hinnant ने date लाइब्रेरी बनाई, जो कैलेंडर तिथियों के साथ कार्य करने के लिए वास्तविक मानक बन गई। यह हल्की है, इसके लिए Boost की आवश्यकता नहीं है, और यह std::chrono के ऊपर काम करती है। इसकी अधिकांश कार्यक्षमता C++20 में शामिल हो गई है, लेकिन यह लाइब्रेरी C++11/14/17 का उपयोग करने वाली परियोजनाओं के लिए अभी भी प्रासंगिक है।



मुख्य क्षमताएँ:

  • year_month_day, year_month, weekday प्रकार।
  • स्ट्रिंग से तिथियाँ पार्स करना (parse)।
  • तिथियों को फ़ॉर्मेट करना (format)।
  • दिनों, महीनों, वर्षों का जोड़/घटाव।
  • समय क्षेत्रों के लिए समर्थन (विस्तार tz.h)।


उदाहरण: तिथियों के साथ कार्य

#include <iostream>#include <date/date.h>#include <chrono>

int main() { using namespace date; using namespace std::chrono; // एक तिथि बनाएँ: 15 मार्च 2025 auto d1 = 2025_y / March / 15; std::cout << "तिथि: " << d1 << ""; // 30 दिन जोड़ें auto d2 = d1 + days{30}; std::cout << "30 दिनों के बाद: " << d2 << ""; // दिनों में अंतर auto diff = (d2 - d1).count(); std::cout << "अंतर: " << diff << " दिन"; // वर्तमान तिथि प्राप्त करें auto today = floor<days>(system_clock::now()); std::cout << "आज: " << year_month_day{today} << ""; return 0;}


यह

अनुशंसाएँ