Je voudrais savoir si il existe un type de variable c++ qui peut être initialiser par un temps de type 1:2:3:5(h:min:s:ms) entrer par l'utilisateur
Je voudrais savoir si il existe un type de variable c++ qui peut être initialiser par un temps de type 1:2:3:5(h:min:s:ms) entrer par l'utilisateur
Bonjour,
Réponse courte : Non.
Réponse longue : Il existe des types "dédiés" à la manipulation du temps, comme clock_t ou time_t. Mais ces types sont en réalités des typedefs de types builtins. Il est donc possible d'initialiser des variables de tels types en fonction de ce qu'entre l'utilisateur, mais pas sans parsing.
En C++11, oui
Regarde <chrono>.
est ce qu'elle peut contenir le temps type h:min:s:ms
À ma connaissance, il n'existe pas de classe qui gère tout ça directement.
Si tu utilises uniquement la bibliothèque standard, tu peux écrire ta propre classe qui sera composée de std::chrono::hours, std::chrono::minutes, std::chrono::seconds, std::chrono::milliseconds, std::chrono::microseconds, std::chrono::nanoseconds (par exemple).
Le C++ te propose des briques de base et ne t'impose aucun choix,
Question,
Combien de de temps s'est il ecoule entre le 31 decembre 2008 23:59:55 et le 1 janvier 2009 00:00:5 ? (oui il y a un piege)
Et il y a encore pleins de cas particuliers du meme acabit (N'oublie pas que la revolution d'octobre a eu lieu en novembre pour l'europe de l'ouest)
On peut aussi se poser une autre question, celle des facon de formater le temps, je ne suis pas sur que partout sur la planete on ecrive hh:mm:ss
Bref le compage de temps c'est un sacre bordel, et les besoins sont fortement en fonction des applications. Donc il y a des choix a faire, c'est donc a l'utilisateur de faire ces choix.
Bref il faut soit ecrire ta classe, soit utiliser une librairie toute faite.
Je connais pas (encore) std::chrono qui contiens surement des briques plus avancee que time_t mais il faut pas rever ca restera des briques.
chrono implémente tout de même 2 classes bien pratiques: duration et time_point.
Ce sont deux classes distinctes car ce sont des notions bien différentes. D'ailleurs cet en-tête vient de boost, de la lib date_time, qui est donc le résultat de longues années d'utilisation, de modifications et d'améliorations.
« L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
Spinoza — Éthique III, Proposition VII
Je crois que le timesamp unix corrige les secondes intercalaires, donc la solution qu'on avait sur un projet ou il fallait etre en UTC et prendre en compte les secondes intercalaires
- Temps GPS (non corrige)
- Liste des secondes intercalaires codees en dur, et correction lorsqu'on convertit un temps GPS en temps UTC.
En sachant que le projet manipule
- Des dates comprise entre 1995 et (a la louche) 2025
- Les dates correspondent a une date de mesure, donc pas de probleme de futurs
- Chaque instrument est dote d'une horloge synchronisee sur le temps GPS
Ce n'est bien evidemment pas adapte a un projet qui doit gerer des dates futures, ou des dates a des periodes plus anciennes.
Mais pour le compage de jours sur de longue periode historique une methode similaire est utilisee on peut convertir en jours juliens
ce qui permet de compter le nombre de jours entre deux dates, sans ce soucier des notions de mois/semaines/ etc...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager