C++ में दिनांक और समय के साथ उन्नत कार्य: chrono से टाइमज़ोन तक

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

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

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

C++ में दिनांक और समय के साथ उन्नत कार्य: chrono से टाइमज़ोन तक

\n\n

दिनांक और समय के साथ काम करना हाई-लोड सिस्टम, लॉगिंग, फाइनेंशियल ऐप और शेड्यूलर बनाने में एक मुख्य कार्य है। C++ स्टैंडर्ड लाइब्रेरी में सरल time_t से लेकर आधुनिक <chrono> तक शक्तिशाली टूल्स मौजूद हैं। इस लेख में हम उन्नत तकनीकों को समझेंगे: सटीक माप, टाइमज़ोन, फ़ॉर्मेटिंग और अंतराल की गणना।

\n\n

1. chrono लाइब्रेरी: duration, time_point और clocks

\n\n

स्टैंडर्ड लाइब्रेरी <chrono> (C++11 और नए) समय के पलों (time_point), अवधियों (duration) और घड़ियों (clock) को दर्शाने के लिए टाइप प्रदान करती है। इससे प्लेटफ़ॉर्म-इंडिपेंडेंट कोड लिखना आसान हो जाता है।

\n\n
#include <iostream>\n#include <chrono>\n#include <thread>\n\nint main() {\n    using namespace std::chrono;\n\n    // शुरुआती समय नोट करें\n    auto start = high_resolution_clock::now();\n\n    // काम का अनुकरण\n    std::this_thread::sleep_for(milliseconds(500));\n\n    auto end = high_resolution_clock::now();\n\n    // अवधि की गणना करें\n    auto duration = duration_cast<milliseconds>(end - start);\n    std::cout << "बीता समय: " << duration.count() << " मि.से.\\n";\n\n    // अलग-अलग इकाइयों में duration के साथ काम करना\n    seconds sec(1);\n    milliseconds ms = sec; // अंतर्निहित रूपांतरण (बिना नुकसान)\n    // milliseconds ms2 = duration_cast<milliseconds>(sec); // स्पष्ट\n    std::cout << "1 सेकंड = " << ms.count() << " मि.से.\\n";\n\n    return 0;\n}
\n\n

मुख्य बिंदु:

\n
    \n
  • duration_cast — इकाइयों के बीच रूपांतरण (सटीकता कम हो सकती है)।
  • \n
  • high_resolution_clock — सबसे सटीक घड़ी (आमतौर पर सिस्टम टाइमर का रैपर)।
  • \n
  • system_clock — सिस्टम का समय, कैलेंडर से जुड़ा हुआ।
  • \n
  • steady_clock — मोनोटोनिक घड़ी, अंतराल मापने के लिए आदर्श।
  • \n
\n\n

2. सिस्टम समय और कैलेंडर तिथियों में रूपांतरण

\n\n

कैलेंडर तिथियों (वर्ष, महीना, दिन) के साथ काम करने के लिए system_clock और to_time_t / from_time_t फ़ंक्शन का उपयोग करें। C++20 से अधिक सुविधाजनक साधन आए हैं, लेकिन हम क्लासिक तरीका देखेंगे।

\n\n
#include <iostream>\n#include <chrono>\n#include <ctime>\n\nint main() {\n    using namespace std::chrono;\n\n    // वर्तमान सिस्टम समय\n    auto now = system_clock::now();\n    std::time_t now_c = system_clock::to_time_t(now);\n\n    // लोकल समय में बदलें\n    std::tm* local = std::localtime(&now_c);\n    std::cout << "लोकल समय: " \n              << std::put_time(local, "%Y-%m-%d %H:%M:%S") << "\\n";\n\n    // कैलेंडर तिथि से time_point बनाएं (C++20 इसे सरल करेगा)\n    std::tm date = {};\n    date.tm_year = 2025 - 1900; // वर्ष 1900 से\n    date.tm_mon = 3;            // अप्रैल (0-11)\n    date.tm_mday = 15;\n    date.tm_hour = 12;\n    date.tm_min = 30;\n    date.tm_sec = 0;\n    std::time_t date_c = std::mktime(&date);\n    auto date_point = system_clock::from_time_t(date_c);\n\n    // दिनों में अंतर\n    auto diff = duration_cast<hours>(now - date_point).count() / 24;\n    std::cout << "15.04.2025 से दिन: " << diff << "\\n";\n\n    return 0;\n}
\n\n

महत्वपूर्ण: std::put_time C++11 से उपलब्ध है। फ़ॉर्मेट स्पेसिफ़ायर strftime के समान हैं।

\n\n

3. टाइमज़ोन और C++20

\n\n

C++20 से पहले टाइमज़ोन के साथ काम करना मुश्किल था। C++20 में <chrono> लाइब्रेरी में time_zone और zoned_time का समर्थन जोड़ा गया। यदि आपका कंपाइलर C++20 सपोर्ट करता है (GCC 12+, Clang 15+, MSVC 2022 17.4+), तो आप इसका उपयोग कर सकते हैं।

ब्लॉग

पुस्तक अनुशंसाएँ