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

Comment puis-je analyser les chaînes de date et effectuer des calculs de temps à l'aide de std::chrono de C 11 ?

Patricia Arquette
Libérer: 2024-11-25 12:52:12
original
941 Les gens l'ont consulté

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

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

Lorsqu'il s'agit de chaînes de date historiques, il est souvent nécessaire de les analyser en date C représentations pour divers calculs. L'espace de noms std::chrono de C 11 fournit des outils puissants pour la gestion du temps.

Analyse d'une chaîne de date

Pour analyser une chaîne de date au format "Jeudi 9 janvier 12 : 35:34 2014", nous pouvons exploiter std::stringstream et std::get_time fonctions :

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

Cela analyse la chaîne en une structure std::tm, qui contient les composants temporels individuels.

Conversion en std::chrono::time_point

Pour obtenir un std::chrono::time_point représentant la date analysée, nous utilisons std::chrono::system_clock::from_time_t:

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

Calcul du temps écoulé

Avec std::chrono::time_point, nous pouvons facilement calculer le temps écoulé heure à partir de la date historique spécifiée :

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

Heure d'accès Composants

std::chrono::duration donne accès à des composants de temps individuels :

  • duration.count() renvoie le nombre total d'unités de temps (secondes par défaut)
  • duration.seconds() récupère les secondes
  • duration.minutes() obtient minutes
  • duration.hours() récupère les heures
  • duration.days() fournit des jours

Support C 11

GCC antérieur à la version 5 n'implémente pas std::get_time. Cependant, une alternative utilisant strptime est également disponible :

std::tm tm = {};
strptime("Thu Jan 9 2014 12:35:34", "%a %b %d %Y %H:%M:%S", &tm);
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