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
396 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!

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