Conversion date / heure: représentation sous forme de chaîne à time_t
Comment puis-je convertir une date en chaîne de caractères formatée comme "MM-DD-YY HH:MM:SS"
à un time_t
valeur en C ou C++?
source d'informationauteur An̲̳̳drew
Vous devez vous connecter pour publier un commentaire.
Utilisation
strptime()
pour analyser le temps dans unstruct tm
puis utilisezmktime()
convertirtime_t
.En l'absence de
strptime
vous pouvez utilisersscanf
pour analyser les données dans unstruct tm
et ensuite appelermktime
. Pas la solution la plus élégante, mais il pourrait fonctionner.Du coup de pouce de la date de la bibliothèque devrait aider; en particulier, vous voudrez peut-être regarder à http://www.boost.org/doc/libs/1_37_0/doc/html/date_time/date_time_io.html
J'ai peur que cela n'existe pas en C /C++ Standard . Il y a la fonction POSIX
strptime
qui peut convertir àstruct tm
qui peut ensuite être convertie àtime_t
à l'aide demktime
.Si vous visez pour la croix-compatibilité de plate-forme, une meilleure utilisation
boost::date_time
qui a des fonctions sophistiquées pour cela.La restriction de code standard fonctions de la bibliothèque C est à la recherche de l'inverse d'
strftime()
. Pour développer @Rob idée générale, utilisesscanf()
.Utilisation
"%n"
pour détecter le scan terminéCode supplémentaire pourrait être utilisé pour assurer seulement 2 chiffres horodatage des pièces, des valeurs positives, l'espacement, etc.
Remarque: cette assumer le "MM-JJ-AA HH:MM:SS" est un local temps.
Noter que
strptime
mentionné dans acceptées réponse n'est pas portable. Ici est pratique C++11 code que j'utilise pour convertir la chaîne de caractères à std::time_t :Vous pouvez l'appeler comme ceci:
Vous pouvez trouver format de la chaîne de paramètres ici.