Maison > développement back-end > C++ > Comment déterminer l'heure antérieure entre deux valeurs temporelles de chaîne en C ?

Comment déterminer l'heure antérieure entre deux valeurs temporelles de chaîne en C ?

DDD
Libérer: 2024-11-29 22:34:10
original
306 Les gens l'ont consulté

How to Determine the Earlier Time Between Two String Time Values in C  ?

Conversion de la chaîne Time en time_t

La conversion d'une chaîne contenant l'heure au format "hh:mm:ss" en time_t en C peut être obtenu de diverses manières.

Une méthode consiste à exploiter les capacités avancées de manipulation de l'heure et de la date de C 11 avec et bibliothèques. Vous pouvez utiliser les étapes suivantes :

  • Définir une structure tm.
  • Utiliser un istringstream pour lire la chaîne temporelle.
  • Extraire les composants temporels à l'aide de get_time.
  • Construisez une valeur time_t en utilisant mktime.

Pour exemple :

std::tm tm;
std::istringstream ss("16:35:12");
ss >> std::get_time(&tm, "%H:%M:%S"); // or just %T in this case
std::time_t time = std::mktime(&tm);
Copier après la connexion

Comparaison des variables de temps pour la valeur la plus ancienne

Pour comparer deux chaînes contenant l'heure, vous pouvez soit comparer leurs représentations time_t correspondantes, soit utiliser des techniques de comparaison de chaînes.

En utilisant les valeurs time_t, vous pouvez les comparer directement en utilisant std::less. Par exemple :

std::string curr_time = "18:35:21";
std::string user_time = "22:45:31";
std::istringstream ss_curr(curr_time);
std::istringstream ss_user(user_time);
std::tm tm_curr, tm_user;
ss_curr >> std::get_time(&tm_curr, "%H:%M:%S");
ss_user >> std::get_time(&tm_user, "%H:%M:%S");
std::time_t time_curr = std::mktime(&tm_curr);
std::time_t time_user = std::mktime(&tm_user);

if (time_curr < time_user) {
  std::cout << curr_time << " is earlier than " << user_time << std::endl;
} else {
  std::cout << user_time << " is earlier than " << curr_time << std::endl;
}
Copier après la connexion

Vous pouvez également utiliser une comparaison de chaînes, en supposant que les deux heures sont au même format :

if (curr_time < user_time) {
  std::cout << curr_time << " is earlier than " << user_time << std::endl;
} else {
  std::cout << user_time << " is earlier than " << curr_time << std::endl;
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal