C++ में दिनांक और समय के साथ कार्य करना: A से Z तक — पूर्ण गाइड

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

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

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

C++ में दिनांक और समय के साथ कार्य करना: A से Z तक

\n\n

दिनांक और समय के साथ कार्य करना प्रोग्रामिंग में बुनियादी कार्यों में से एक है। इसकी आवश्यकता हर जगह होती है: इवेंट लॉगिंग से लेकर डेडलाइन की गणना और ग्राफ़ बनाने तक। C++ में ऐतिहासिक रूप से यह क्षेत्र सबसे सुविधाजनक नहीं था, लेकिन C++11 मानक और उसके बाद के संस्करणों (C++14, C++17, C++20) के आगमन के साथ स्थिति में मौलिक रूप से बदलाव आया। इस लेख में हम सभी प्रमुख पहलुओं पर चर्चा करेंगे: क्लासिक C फ़ंक्शन से लेकर आधुनिक chrono लाइब्रेरी, टाइमर, फ़ॉर्मेटिंग और पार्सिंग तक। यह सामग्री शुरुआती और अनुभवी डेवलपर्स दोनों के लिए उपयोगी होगी जो अपने ज्ञान को व्यवस्थित करना चाहते हैं।

\n\n

1. क्लासिक दृष्टिकोण: time_t और tm संरचना

\n\n

chrono के आगमन से पहले, <ctime> के फ़ंक्शन मुख्य उपकरण थे। यह दृष्टिकोण पुराने कोड को सपोर्ट करने और सरल कार्यों के लिए प्रासंगिक बना हुआ है।

\n\n

मुख्य फ़ंक्शन:

\n
    \n
  • time() — वर्तमान समय को time_t के रूप में लौटाता है (1 जनवरी 1970 से सेकंड की संख्या)।
  • \n
  • localtime() — time_t को tm संरचना (स्थानीय समय) में बदलता है।
  • \n
  • gmtime() — UTC में बदलता है।
  • \n
  • strftime() — tm को स्ट्रिंग में फ़ॉर्मेट करता है।
  • \n
  • mktime() — उल्टा रूपांतरण: tm → time_t।
  • \n
\n\n
#include <iostream>\n#include <ctime>\n\nint main() {\n    // वर्तमान समय प्राप्त करें\n    std::time_t now = std::time(nullptr);\n\n    // स्थानीय समय में बदलें\n    std::tm* local_tm = std::localtime(&now);\n\n    // स्ट्रिंग में फ़ॉर्मेट करें\n    char buffer[80];\n    std::strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", local_tm);\n\n    std::cout << "वर्तमान समय: " << buffer << std::endl;\n    return 0;\n}
\n\n

दृष्टिकोण की कमियाँ:

\n
    \n
  • केवल सेकंड के साथ काम करता है (मिलीसेकंड और माइक्रोसेकंड उपलब्ध नहीं हैं)।
  • \n
  • मल्टीथ्रेडेड वातावरण में असुरक्षित (POSIX में localtime_r का उपयोग करें)।
  • \n
  • tm संरचना में ऐसे फ़ील्ड हैं जिन्हें आसानी से भ्रमित किया जा सकता है (वर्ष 1900 से शिफ्ट, महीने 0 से शुरू)।
  • \n
  • समय क्षेत्र और समय अंतराल का समर्थन नहीं है।
  • \n
\n\n

2. आधुनिक C++: chrono लाइब्रेरी (C++11 और नया)

\n\n

chrono लाइब्रेरी समय के साथ काम करने के लिए एक शक्तिशाली और टाइप-सेफ उपकरण है। यह सभी आधुनिक C++ प्रोजेक्ट्स का आधार है।

\n\n

मुख्य घटक:

\n
    \n
  • घड़ियाँ (clocks): system_clock (सिस्टम समय), steady_clock (माप के लिए मोनोटोनिक घड़ी), high_resolution_clock (अधिकतम रिज़ॉल्यूशन)।
  • \n
  • समय बिंदु (time_point): विशिष्ट घड़ियों से जुड़े होते हैं।
  • \n
  • अवधि (duration): समय अंतराल (सेकंड, मिलीसेकंड, नैनोसेकंड)।
  • \n
\n\n
#include <iostream>\n#include <chrono>\n#include <thread>\n\nint main() {\n    using namespace std::chrono;\n\n    // वर्तमान समय बिंदु\n    auto now = system_clock::now();\n\n    // प्रदर्शन के लिए time_t में बदलें\n    std::time_t now_c = system_clock::to_time_t(now);\n    std::cout << "वर्तमान समय: " << std::ctime(&now_c);\n\n    // निष्पादन समय मापना\n    auto start = steady_clock::now();\n    std::this_thread::sleep_for(milliseconds(500)); // कार्य का अनुकरण\n    auto end = steady_clock::now();\n\n    auto duration = duration_cast<milliseconds>(end - start);\n    std::cout << "बीता: " << duration.count() << " मि.से." << std::endl;\n\n    return 0;\n}
\n\n

chrono के लाभ:

\n
    \n
  • उच्च सटीकता (नैनोसेकंड)।
  • \n
  • टाइप सुरक्षा (गलती से सेकंड को मिलीसेकंड के साथ नहीं जोड़ा जा सकता)।
  • \n
  • अंकगणित का समर्थन (जोड़/घटा

ब्लॉग

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