est au courant d'une fonction d'analyse de date pour c. Je cherche quelque chose comme: merci p> p> p>
9 Réponses :
Malheureusement, la seule chose dans la bibliothèque standard est getDate ( ) code>
, défini par POSIX, pas la norme C. Il gérera de nombreux formats de temps, mais vous devez connaître le format à l'avance - pas seulement passer une chaîne générique à la fonction. P>
Il n'est pas également pris en charge sur Visual C ++, si c'est un problème pour vous. Le runtime GNU C prend en charge cette routine. P>
Y a-t-il quelque chose qui n'est pas dans la norme et portable?
the Bibliothèque Julian fait une grande partie de ce que vous demandez - Voir notamment comment son analyse fonctionne. Cependant, je ne pense pas que cela s'étire tout à fait jusqu'à vos besoins (que lundi code>, je crois, je le jetterais pour une rotation; -). P>
dans le temps.h Vous avez plus de temps: qui fait l'opposé de p> Cliquez ici pour la référence complète sur Wikipedia P> P>
Et si je ne connais pas le format?
@adk hmm ... Eh bien, vous devez donner des instructions afin de savoir si vous le nourrissez un mois contre un jour ou une année ... vous savez? Mais vous pouvez pour une chaîne d'entrée donnée, essayez de l'analyser avec plusieurs formats et continuez à l'essayer jusqu'à ce que la fonction ne renvoie pas NULL.
@Mitch Blé - Dunno À propos de VC ++ Avez-vous vérifié CURE?
Il y a deux approches assez courantes en C: p>
Utilisez Strptime () avec une gamme de formats pris en charge que vous acceptez. P> li>
Bang Tête contre la table beaucoup, puis abandonnez ou utilisez une autre langue qui a déjà une bibliothèque utilisable (comme Perl ou Python). P> Li> ol>
git a un portable Date d'analyse de la bibliothèque , libérée sous GPLV2 . Vous pourriez être capable d'utiliser cela. Je pense que vous voulez approximatate_careful () code>. P>
Si le format est cohérent, vous pouvez utiliser scanf code> fonctions de la famille
Je suis un peu en retard à la fête, mais nous construisons sur ce que Mark Lodato posté, j'ai jeté ceci ensemble: Git Envoi d'approximation sous forme de bibliothèque . Testé sur Linux / Mac. P>
dans Windows, il y a Vardatefromstr qui peut automatiquement analyser de nombreux formats s'il est utilisé comme celui-ci:
LPCWSTR dateString = L" DATE result; HRESULT hr = ::VarDateFromStr(dateString, LOCALE_ALL, 0, &result); if (FAILED(hr)) { /* handle error */ /* DISP_E_TYPEMISMATCH means that it didn't recognize the format. */ }
Le NotMuch Mail Project a un analyseur GPLV2 + pour les chaînes de date. Il prend en charge des dates absolues et relatives dans divers formats conviviaux, bien que les dates relatives ne font référence que sur le passé. Le code est dans le Subdirectory String-Time-String of the Notmuch Arbre source . p>
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses uniquement uniquement peuvent devenir invalides si la page liée change. - de l'avis
@ DJHASKIN987 a légèrement amélioré la réponse, mais il n'y a pas beaucoup d'informations essentielles qui pourraient être ajoutées au-delà de la source définitive du code. Comment est-ce que c'est peut-être pire que les deux réponses upvotes pointées sur l'analyseur de date de GIT?
Comme mentionné par BLAK3R dans un commentaire, votre spécification est ambiguë. Dans le premier exemple, la date peut être analysée le 10 septembre ou le 9 octobre, selon le pays dans lequel vous vous trouvez. Vous devez spécifier un format.