Ecco un numero gratuito, open-source date library che lo farà per voi. Sentiti libero di ispezionare il codice se vuoi sapere esattamente come è fatto. È possibile utilizzare per ottenere le ore attuali e minuti dalla mezzanotte nel fuso orario UTC in questo modo:
#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';
}
Se si desidera che le informazioni in qualche altro fuso orario, avrete bisogno di questo ulteriore IANA time zone parser (o si può scrivere il proprio sistema di gestione del fuso orario). Il codice di cui sopra verrebbe modificato in questo modo per ottenere le ore ei minuti dalla mezzanotte nel fuso orario locale:
#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';
}
Queste librerie sono disponibili su GitHub qui:
https://github.com/HowardHinnant/date
Ecco un video di presentazione della biblioteca data:
https://www.youtube.com/watch?v=tzyGjOm8AKo
E qui è un video Presentati sulla della biblioteca di fuso orario:
https://www.youtube.com/watch?v=Vwd3pduVGKY
fonte
2015-12-30 16:21:03
La sua roba come questo che infastidisce davvero me- grazie però. – user997112