La Bibliothèque C pour l'Analyse Date Heure
Est un courant d'une date en fonction d'analyse syntaxique pour les c de. Je suis à la recherche de quelque chose comme:
time = parse_time("9/10/2009");
printf("%d\n", time->date);
time2 = parse_time("Monday September 10th 2009")
time2 = parse_time("Monday September 10th 2009 12:30 AM")
Merci
- quelle plateforme utilisez-vous?
- Comme mentionné par blak3r dans un commentaire, votre cahier des charges est ambigu. Dans le premier exemple, la date peut être analysée comme 10 septembre, ou que le 9 octobre, selon le pays où vous vous trouvez. Vous devez spécifier un format.
Vous devez vous connecter pour publier un commentaire.
La Julian Bibliothèque fait beaucoup de ce que vous demandez-voir en particulier la façon dont ses l'analyse œuvres. Cependant, je ne pense pas que c'est assez s'étend TOUT le chemin à vos besoins (que
Monday
, je crois, serait de le jeter pour un tour;-).Il y a deux assez approches communes dans C:
Utilisation strptime() avec un éventail de formats pris en charge vous accepter.
Bang tête contre la table de beaucoup, et alors soit renoncer, soit utiliser une autre langue qui est utilisable à la bibliothèque déjà (comme perl ou python).
Si le format est compatible, vous pouvez utiliser
scanf
les fonctions de la familleMalheureusement, la seule chose dans la bibliothèque standard est
getdate()
, défini par POSIX, pas du C standard. Il prendra en charge de nombreux formats de temps, mais vous avez besoin de connaître le format à l'avance — et pas seulement passer d'une chaîne générique à la fonction.Il n'est également pas pris en charge sur Visual C++, si c'est un problème pour vous. Le GNU C runtime prend en charge cette routine, cependant.
Git a un portable date de l'analyse de la bibliothèque, publié sous la GPLv2. Vous pourriez être en mesure de les utiliser. Je pense que vous voulez
approxidate_careful()
.Je suis un peu en retard à la fête, mais en s'appuyant sur les propos de Mark Lodato posté, j'ai jeté cette ensemble: git est approxidate dans la bibliothèque de formulaire. Testé sur Linux/Mac.
Dans le temps.h vous avez strptime:
qui fait le contraire de
Cliquez ici pour la Référence complète sur Wikipédia
Dans Windows, il est VarDateFromStr qui peut automatiquement analyser de nombreux formats s'utilise comme ceci:
Il constatera généralement des formats numériques, mais peut aussi analyser "le 10 septembre 2009 à 12:30", sans lundi et sur mon ordinateur allemand sans th, mais qui pourrait être dépendant de paramètres régionaux. Les mots doivent être dans la langue locale, par exemple, il aura besoin de "juin" sur les systèmes anglais, mais "Juni" allemand systèmes.
La notmuch mail de projet a un GPLv2+ analyseur pour la date de chaînes. Il prend en charge absolue et relative des dates dans une variété de formats difficiles à utiliser, bien que les dates relatives réfère uniquement au passé. Le code est dans le analyser en temps-string sous-répertoire de la notmuch arborescence des sources.