2015-12-30 16 views
5

Próbowałem znaleźć przykład przy użyciu std :: chrono, który po prostu pobiera chrono::time_point i wyodrębnia liczbę godzin i liczbę minut jako liczby całkowite.Uzyskaj bieżącą liczbę godzin i minut za pomocą chrono :: time_point

mam:

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

ale nie mogę dowiedzieć się, jak wówczas wyodrębnić godziny i minuty (od północy)? Szukam czegoś podobnego:

int hours = now.clock.hours(); 

Odpowiedz

6

Oto bezpłatny, open-source date library, który zrobi to za Ciebie. Zapraszam do sprawdzenia kodu, jeśli chcesz dokładnie wiedzieć, jak to się robi. Można go używać w celu uzyskania aktualnych godziny i minuty od północy w strefie czasowej UTC jak ten:

#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'; 
} 

Jeśli chcesz informacje w innej strefie czasowej, trzeba będzie ten dodatkowy IANA time zone parser (lub można napisać własny system zarządzania strefą czasową). Powyższy kod będzie modyfikowana jak tak, aby uzyskać godziny i minuty od północy w lokalnej strefie czasowej:

#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'; 
} 

Biblioteki te są dostępne na github tutaj:

https://github.com/HowardHinnant/date

Oto prezentacja wideo od daty biblioteka:

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

A oto presentati wideo na biblioteki strefa czasu:

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