Bonjour,

J'ai une question sur la méthode mktime de <ctime>.

Voici le code qui pose problème :
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);
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 :
If the calendar time cannot be represented, a value of -1 is returned.
Mais ce n'est pas le cas. Pourquoi ?
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.