एक पुराने प्रश्न का नया उत्तर:
प्रश्न किस समयक्षेत्र में निर्दिष्ट नहीं है। दो उचित संभावनाएं हैं:
- यूटीसी में।
- कंप्यूटर के स्थानीय समयक्षेत्र में।
1 के लिए, आप इस तिथि पुस्तकालय और निम्नलिखित कार्यक्रम का उपयोग कर सकते हैं :
#include "date.h"
#include <iostream>
int
main()
{
using namespace date;
using namespace std::chrono;
std::cout << system_clock::now() << '\n';
}
जो मेरे लिए सिर्फ आउटपुट:
2015-08-18 22:08:18.944211
तिथि पुस्तकालय अनिवार्य रूप से सिर्फ एक स्ट्रीमिंग ऑपरेटर जोड़ता है std::chrono::system_clock::time_point
। यह कई अन्य अच्छी कार्यक्षमता को भी जोड़ता है, लेकिन इस सरल कार्यक्रम में इसका उपयोग नहीं किया जाता है।
यदि आप 2 (स्थानीय समय) पसंद करते हैं, तो एक टाइमज़ोन लाइब्रेरी है जो डेट लाइब्रेरी के शीर्ष पर बनती है । ये दोनों लाइब्रेरी ओपन सोर्स और क्रॉस प्लेटफॉर्म हैं , मान लीजिए कि कंपाइलर C ++ 11 या C ++ 14 को सपोर्ट करता है।
#include "tz.h"
#include <iostream>
int
main()
{
using namespace date;
using namespace std::chrono;
auto local = make_zoned(current_zone(), system_clock::now());
std::cout << local << '\n';
}
जो मेरे लिए सिर्फ आउटपुट:
2015-08-18 18:08:18.944211 EDT
से परिणाम प्रकार make_zoned
एक है date::zoned_time
जो एक date::time_zone
और एक की एक जोड़ी है std::chrono::system_clock::time_point
। यह जोड़ी स्थानीय समय का प्रतिनिधित्व करती है, लेकिन UTC का प्रतिनिधित्व भी कर सकती है, यह इस बात पर निर्भर करता है कि आप इसे कैसे लिखते हैं।
उपरोक्त आउटपुट के साथ, आप देख सकते हैं कि मेरा कंप्यूटर इस समय -4h के यूटीसी ऑफसेट के साथ टाइमज़ोन में है, और ईडीटी का संक्षिप्त नाम है।
यदि कुछ अन्य समयक्षेत्र वांछित है, तो वह भी पूरा किया जा सकता है। उदाहरण के लिए सिडनी, ऑस्ट्रेलिया में वर्तमान समय को खोजने के लिए केवल चर के निर्माण को बदलें local
:
auto local = make_zoned("Australia/Sydney", system_clock::now());
और आउटपुट में परिवर्तन होता है:
2015-08-19 08:08:18.944211 AEST
C ++ 20 के लिए अद्यतन
यह लाइब्रेरी अब काफी हद तक C ++ 20 के लिए अपनाई गई है। नेमस्पेस date
चला गया है और सब कुछ std::chrono
अब नेमस्पेस में है। और के zoned_time
स्थान पर उपयोग करें make_time
। हेडर ड्रॉप "date.h"
और "tz.h"
और बस का उपयोग <chrono>
।
जैसा कि मैंने यह लिखा है, कुछ प्लेटफार्मों पर आंशिक कार्यान्वयन अभी शुरू हो रहे हैं।