Maison > développement back-end > C++ > Comment puis-je analyser les chaînes de date et calculer le temps écoulé à l'aide de std::chrono de C 11 ?

Comment puis-je analyser les chaînes de date et calculer le temps écoulé à l'aide de std::chrono de C 11 ?

Barbara Streisand
Libérer: 2024-11-29 22:29:10
original
532 Les gens l'ont consulté

How Can I Parse Date Strings and Calculate Elapsed Time Using C  11's std::chrono?

Analyse des chaînes de date avec C 11 std::chrono

Lorsque vous travaillez avec des informations de date et d'heure, il est souvent nécessaire d'analyser une chaîne de date dans une représentation de données appropriée. Pour C 11, l'espace de noms std::chrono fournit des outils puissants pour gérer les durées et les points temporels.

Analyse des chaînes de date

Pour analyser une chaîne de date en std : :chrono, GCC fournit la fonction std::get_time. Étant donné un objet std::tm et une chaîne de format, std::get_time peut extraire les composants de date et d'heure de la chaîne d'entrée. L'extrait de code suivant le démontre :

std::tm tm = {};
std::stringstream ss("Jan 9 2014 12:35:34");
ss >> std::get_time(&tm, "%b %d %Y %H:%M:%S");
Copier après la connexion

Les versions de GCC antérieures à 5 n'implémentent pas std::get_time. Comme alternative, vous pouvez utiliser strptime :

std::tm tm = {};
strptime("Thu Jan 9 2014 12:35:34", "%a %b %d %Y %H:%M:%S", &tm);
Copier après la connexion

Calcul du temps écoulé

Une fois que vous avez la date et l'heure analysées dans un objet std::tm, vous peut le convertir en time_point en utilisant std::chrono::system_clock::from_time_t:

auto tp = std::chrono::system_clock::from_time_t(std::mktime(&tm));
Copier après la connexion

Ce time_point représente la date et l'heure analysées dans le fuseau horaire actuel. Pour calculer le temps écoulé depuis la date analysée, soustrayez le point_temporel actuel du point_temporel analysé :

auto now = std::chrono::system_clock::now();
auto elapsed = now - tp;
Copier après la connexion

Accès aux composants temporels

Le std::chrono:: L'objet de durée donne accès aux composants de temps écoulé. Pour récupérer le nombre de secondes, de minutes, d'heures et de jours, utilisez les fonctions suivantes :

auto seconds = std::chrono::duration_cast<std::chrono::seconds>(elapsed).count();
auto minutes = std::chrono::duration_cast<std::chrono::minutes>(elapsed).count();
auto hours = std::chrono::duration_cast<std::chrono::hours>(elapsed).count();
auto days = std::chrono::duration_cast<std::chrono::days>(elapsed).count();
Copier après la connexion

En utilisant ces techniques, vous pouvez analyser efficacement les chaînes de date en points de temps std::chrono et calculer le temps écoulé. temps depuis la date analysée, donnant accès aux composants temporels souhaités de manière pratique et efficace.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal