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
Jego rzeczy, jak to, które naprawdę denerwuje Me dzięki chociaż. – user997112