Y a-t-il une fonction pour vérifier si une date donnée est valide ou non? Je ne veux rien écrire de zéro. P>
E.g. 32/10/2012 n'est pas valide et 10/10/2010 est valide p>
3 Réponses :
Si votre chaîne est toujours dans ce format, la chose la plus facile à faire serait de diviser la chaîne en trois composants, peuplez une structure Vous pouvez également utiliser boost.date_time pour analyser: p> TM code> et transmettez-la sur mktime () code>. S'il renvoie -1, il n'est pas une date valide.
Quel svp et analyseur sont?
mktime normalisera une date. Par exemple, si la journée est négative, elle enveloppera le mois précédent et ajustera les membres de la journée et du mois en conséquence.
mktime : Les valeurs dans le temps sont autorisées à être à l'extérieur leurs gammes normales i>
La classe d'heure de réussite devrait pouvoir gérer ce dont vous avez besoin. Voir http://www.boost.org/doc/libs/ Libération / doc / html / date_time.html p>
Ou la version actuelle, boost.org/doc/libs/1_48_0 /doc/html/date_time.html
Ahh. Oui, laissez-moi éditer mon post pour refléter cela. Merci Fred.
Ou ce que je suis sûr, c'est le lien de version actuel. :) Merci Vlad.
Si le format de la date est constant et que vous ne souhaitez pas utiliser Boost, vous pouvez toujours utiliser STRPTIME code>, défini dans l'en-tête CTINE CODE>: const char date1[] = "32/10/2012";
const char date2[] = "10/10/2012";
struct tm tm;
if (!strptime(date1, "%d/%m/%Y", &tm)) std::cout << "date1 isn't valid\n";
if (!strptime(date2, "%d/%m/%Y", &tm)) std::cout << "date2 isn't valid\n";
Portez à l'esprit STRATTIME () CODE> est une extension non standard qui n'est pas disponible sur tous les systèmes (y compris Windows).
@Spencercw: En effet. Toutefois, il existe des implémentations open source pour la plupart des systèmes, y compris Windows. En outre, c'est une norme de POSIX. :)
Où est-ce que cette valeur est originaire? Qu'est-ce qui est fait avec ça?
C'est l'entrée. Je veux juste vérifier si c'est valide ou non.