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
Barbara Streisandoriginal
2024-11-29 22:29:10613parcourir

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");

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);

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));

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;

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();

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!

Déclaration:
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