TL;DR : Comment utiliser un std::chrono::system_clock::time_point
pour comparer sur la base de certains paramètres seulement (par exemple, je veux seulement les heures, les minutes et les secondes, mais pas le jour, le mois, etc.)
Aussi : Après avoir converti le std::chrono::system_clock::time_point
à un std::tm
El std::tm.tm_hours
contient une valeur supérieure d'une unité à l'entrée initiale de la fonction std::chrono::system_clock::time_point
.
Mon approche théorique sur l'obtention d'un std::chrono::system_clock::time_point
pour travailler :
typedef std::chrono::system_clock::time_point TimePoint;
TimePoint MainWindow::createTimePoint(int h, int m)
{
TimePoint createdTime = std::chrono::system_clock::time_point{std::chrono::hours(h) + std::chrono::minutes(m)};
time_t tt = std::chrono::system_clock::to_time_t(createdTime);
tm timeExtracted = *localtime(&tt);
std::cout << "input:\t\t" << "H = " << h << ", M = " << m << std::endl;
std::cout << "timeExtracted:\t" << "H = " << timeExtracted.tm_hour << ", M = " << timeExtracted.tm_min << std::endl;
return createdTime;
}
Si je fais ça, les heures de timeExtracted
sont toujours +1 à partir de l'entrée h
.
Pourquoi en est-il ainsi ? Et comment y remédier ? J'ai parcouru quelques autres posts qui montraient cela, mais ils n'ont pas pu m'aider. Probablement aussi à cause de ceci :
Je pense que lorsque je crée un TimePoint
le jour, le mois, etc. est également réglé sur une valeur aléatoire ou initié à une certaine valeur. Le problème est le suivant : Je veux qu'ils soient toujours de la même valeur, afin que mon TimePoint
(après conversion) montre essentiellement ceci :
timeExtracted.tm_sec = 0
timeExtracted.tm_min = m
timeExtracted.tm_hour = h
timeExtracted.tm_mon = 0
timeExtracted.tm_wday = 0
timeExtracted.tm_mday = 0
timeExtracted.tm_yday = 0
timeExtracted.tm_year = 0
timeExtracted.tm_isdst = 0
Comment puis-je comparer deux de ces TimePoint
en utilisant les opérations de comparaison de std::chrono sur eux, mais en ne comparant que l'heure et la minute.
Si ma question n'est pas claire, je suis désolé, il est tard dans la soirée. Je vérifierai à nouveau demain matin. Merci.