2015-12-30 8 views
5

का उपयोग कर घंटों और मिनटों की वर्तमान संख्या प्राप्त करें मैं std :: chrono का उपयोग करके एक उदाहरण खोजने की कोशिश कर रहा हूं जो आसानी से chrono::time_point प्राप्त करता है और पूर्णांक के रूप में घंटे और संख्याओं की संख्या निकालता है।chrono :: time_point

मेरे पास है:

std::chrono::system_clock::time_point now = std::chrono::system_clock::now(); 

लेकिन मैं बाहर नहीं मिल रहा है तो कैसे घंटे और मिनट (आधी रात के बाद से) निकालने के लिए? मैं कुछ ऐसा रहा हूँ:

int hours = now.clock.hours(); 

उत्तर

4

समस्या यह है कि वहाँ नहीं वास्तव में मानक पुस्तकालय में किसी भी तरह के कार्यक्षमता है। आप convert the time point to a time_t करने के लिए है और old functions का उपयोग a tm structure मिलता है।

+4

इस तरह अपने सामान जो वास्तव में मुझ धन्यवाद हालांकि गुस्सा दिलाती है। – user997112

6

यहाँ एक मुक्त, open-source date library जो आप के लिए यह करना होगा है। अगर आप जानना चाहते हैं कि यह कैसे किया जाता है तो कोड का निरीक्षण करने के लिए स्वतंत्र महसूस करें। आप इस तरह यूटीसी समय क्षेत्र में आधी रात के बाद से वर्तमान घंटे और मिनट प्राप्त करने के लिए उपयोग कर सकते हैं:

#include "date/date.h" 
#include <iomanip> 
#include <iostream> 

int 
main() 
{ 
    auto now = date::floor<std::chrono::minutes>(std::chrono::system_clock::now()); 
    auto dp = date::floor<date::days>(now); 
    auto time = date::make_time(now - dp); 
    int hours = time.hours().count(); 
    int minutes = time.minutes().count(); 
    std::cout.fill('0'); 
    std::cout << std::setw(2) << hours << ':' << std::setw(2) << minutes << '\n'; 
} 

आप किसी अन्य समय क्षेत्र में जानकारी चाहते हैं, तो आप इस अतिरिक्त IANA time zone parser की आवश्यकता होगी (या आप अपने स्वयं लिख सकते हैं टाइमज़ोन प्रबंधन प्रणाली)।

#include "date/tz.h" 
#include <iomanip> 
#include <iostream> 

int 
main() 
{ 
    auto zt = date::make_zoned(date::current_zone(), 
           std::chrono::system_clock::now()); 
    auto now = date::floor<std::chrono::minutes>(zt.get_local_time()); 
    auto dp = date::floor<date::days>(now); 
    auto time = date::make_time(now - dp); 
    int hours = time.hours().count(); 
    int minutes = time.minutes().count(); 
    std::cout.fill('0'); 
    std::cout << std::setw(2) << hours << ':' << std::setw(2) << minutes << '\n'; 
} 

इन पुस्तकालयों यहाँ GitHub पर उपलब्ध हैं:: उपरोक्त कोड तो स्थानीय समय क्षेत्र में आधी रात के बाद से घंटे और मिनट प्राप्त करने के लिए की तरह संशोधित किया जाएगा

https://github.com/HowardHinnant/date

यहाँ एक वीडियो प्रस्तुति है तारीख पुस्तकालय की:

https://www.youtube.com/watch?v=tzyGjOm8AKo

और यहाँ एक वीडियो presentati है समय क्षेत्र पुस्तकालय की पर:

https://www.youtube.com/watch?v=Vwd3pduVGKY

संबंधित मुद्दे