IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Problème jour semaine avec mktime


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Par défaut Problème jour semaine avec mktime
    Bonjour,

    J'ai une fonction qui me retourne classiquement avec mktime, le jour de la semaine à partir d'un format string de type "jj/mm/aaaa". Jusqu'au dimanche 27 mars, .tm_wday renvoyais 0 pour le lundi jusqu'à 6 pour le dimanche, mais depuis le 28 mars, le lundi vaut 1 jusqu'au dimanche qui vaut 0 !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    int Conversion_date(string date)  /* date au format jj/mm/aaaa */
    {
    	int jour = 0; int mois = 0; int annee = 0; int jour_semaine = 10;
    	struct tm time;
     
    	stringstream flux(date);
    	int nb_cell = 0;
    	string cell;
    	while (getline(flux, cell, '/')){
    		switch (nb_cell){
    			case 0:
    				jour = atoi(cell.c_str());
    				break;
    			case 1:
    				mois = atoi(cell.c_str());
    				break;
    			case 2:
    				annee = atoi(cell.c_str());
    				break;
    		}
    		++nb_cell;
    	}
     
    	time.tm_mday = jour;			
    	time.tm_mon = mois - 1;
    	time.tm_year = (annee - 1900);
    	time.tm_hour = 0; time.tm_min = 0; time.tm_sec = 0;
     
    	if (mktime(&time)==-1){
    		printf("Erreur, le format de la date n'est pas correct\n");
    		system("PAUSE");exit(EXIT_FAILURE);
    	}
     
           jour_semaine = time.tm_wday;				
     
           return (jour_semaine);	
    }
    Quelqu'un a-t-il une explication rationnelle à ce phénomène surnaturel ?

    Merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2008
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyse système
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 227
    Par défaut
    Normalement, d'après la définition, tm_wday, renvoie le nombre de jours depuis dimanche. Celà me parait donc normal d'obtenir 1 pour lundi.
    C'est que tu obtiennes 0 avant qui me parait plus surprenant.

  3. #3
    Membre confirmé
    Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Par défaut
    Citation Envoyé par AF_2.8 Voir le message
    Normalement, d'après la définition, tm_wday, renvoie le nombre de jours depuis dimanche. Celà me parait donc normal d'obtenir 1 pour lundi.
    C'est que tu obtiennes 0 avant qui me parait plus surprenant.
    C'est effectivement ce que j'avais lu quand j'avais créé la fonction il y a quelques temps, mais j'avais dû m'adapter à cette autre numérotation, sans trop me poser de questions existentielles au pourquoi du comment... mais là d'un coup d'un seul, dans une liste de dates contenues dans un même fichier, le système revient à la numérotation classique à partir du 28 mars ! J'ai bien du mal à comprendre...

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/02/2008, 14h36
  2. Changement du jour de la semaine avec java.util.GregorianCalendar
    Par Alexandre T dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 10/09/2007, 10h01
  3. Réponses: 1
    Dernier message: 25/05/2007, 22h31
  4. [débutant] Date avec jours semaine
    Par moomba dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 17/04/2007, 16h36
  5. Problème de semaine et de jours
    Par Aitone dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 20/02/2007, 10h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo