Bonjour,
J'ai une question sur la méthode mktime de <ctime>.
Voici le code qui pose problème :
Normalement time devrait être égal à -1(sur la dernière ligne en rouge) vu que je tente de convertir la date 50ième jour du mois de décembre 2070 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 time_t rawTime = 0, time = 0; struct tm *t = localtime (&rawTime); t->tm_sec = 0; t->tm_min = 0; t->tm_hour = 0; t->tm_mday = 50; t->tm_mon = 11; t->tm_year = 100; time = mktime(t);
Mais ce n'est pas le cas. Pourquoi ?If the calendar time cannot be represented, a value of -1 is returned.
Je n'arrive pas à trouver un semblant de réponses sur le net
Edit : En faisant des recherches et en utilisant des mots exotiques sur google, j'ai réussi à trouver la réponse à ma question.
C'est mktime qui ajuste les valeurs de la structure. Par ex le 32 janvier sera compris comme le 1 février..
Et le 29 février 2013 sera compris comme le 1 mars 2013.....
Du coup, ça ne m'arrange pas.
Effectivement, pour vérifier une date :
* je faisais appel à localtime pour me fournir une struct tm valide
* je modifiais la struct tm en la remplissant de la date à vérifier
* je donnais la struct tm à mktime et vérifiais si le retour == -1 pour voir si la date était correcte..
N'existe-t-il pas une méthode tel que mktime mais qui ne chipote pas lors de la conversion ? Donc qui fait stricto sensu la conversion de la date qu'on lui donne et puis c'est tout.
Partager