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

MFC Discussion :

[C++ - MFC] num�ro de la semaine en cours...?


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    54
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 54
    Par d�faut [C++ - MFC] num�ro de la semaine en cours...?
    Bonjour, je cherche � trouver le num�ro actuel de la semaine, pour cela, la fonction mktime (time.h) permet d'obtenir un timer d'une date quelconque, une semaine c'est 7 jours soit 7*24*60*60 secondes :
    Voila le code :
    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
    	struct tm ourRef;
    	struct tm theDate;
     
    	ourRef.tm_sec = 0;
    	ourRef.tm_min = 0;
    	ourRef.tm_hour = 0;
    	ourRef.tm_mday = 1;
    	ourRef.tm_mon = 0; //Janvier est 0
    	ourRef.tm_year = date.GetYear()-1900; //years since 1900
     
       theDate.tm_sec = date.GetSecond();
    	theDate.tm_min = date.GetMinute();
    	theDate.tm_hour = date.GetHour();
    	theDate.tm_mday = date.GetDay();
    	theDate.tm_mon = date.GetMonth();
    	theDate.tm_year = date.GetYear()-1900; //years since 1900
     
    	int semaine=(mktime(theDate)-mktime(ourRef))/(7*24*60*60);
    Je ne suis pas un pro en mktime.... le compilateur VC7 me sort : error C2664: 'mktime' : impossible de convertir le param�tre 1 de 'tm' en 'tm *'
    Je comprend po bien
    Qq1 peut m'aider � finir cette fonction?

  2. #2
    R�dacteur/Mod�rateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Par d�faut
    Salut

    Cel� veut simplement dir qu'il veut un pointeur sur un struct tm, tu n'as qu'� faire
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    int semaine=(mktime(&theDate)-mktime(&ourRef))/(7*24*60*60);
    Pour plus d'explications, cours et tutoriels pour apprendre C++ et cours et tutoriels pour apprendre langage C
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas �tre meilleur que les autres, il faut �tre meilleur que soi." Albert Jacquard
    "Ceux qui savent o� ils ont pos� leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, �a vous changera les id�es !
    Ma page Prolog
    Mes codes sources comment�s

    Mon avatar : La Madeleine � la veilleuse de Georges de La Tour

  3. #3
    Membre Expert
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Par d�faut
    avec COleDateTime::GetDayOfYear ca te retourne le nombre de jour ecoul� dans l'ann�e configurer.

    1 janvier => 1
    2 janvier => 2
    etc ...

    en divisant ce chiffre par 7 tu as le num�ro de semaine -1

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    21
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2003
    Messages : 21
    Par d�faut
    hum, c'est plus compliqu� que �a pour avoir le num�ro de la semaine en cours, j'ai un copain qui l'a fait. Si j'y pense, demain je t'envoie l'algo (pas de code ...)

    Je l'ai pas chez moi, mais au boulot ...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    54
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 54
    Par d�faut
    Citation Envoy� par Trap D
    Salut
    Cel� veut simplement dir qu'il veut un pointeur sur un struct tm, tu n'as qu'� faire
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    int semaine=(mktime(&theDate)-mktime(&ourRef))/(7*24*60*60);
    Ok, merci, c'est ce que j'ai fais et ca marche presque, car que je trouve semaine 50 alors qu'on est en semaine 47...

    Citation Envoy� par la drogue c'est mal
    avec COleDateTime::GetDayOfYear ca te retourne le nombre de jour ecoul� dans l'ann�e configurer.
    en divisant ce chiffre par 7 tu as le num�ro de semaine -1
    Arf, c'est pas assez compliqu� pour moi, lol, nan, t'as raison, si j'avais eu cette fonction, je me serais fais moins chier.... et dis moi, pouquoi -1? en fait, c'est le meme principe que moi, sauf que moi c'est en seconde et pas en jours, mais pourquoi je trouve 50, alors?

    Citation Envoy� par Big K.
    hum, c'est plus compliqu� que �a pour avoir le num�ro de la semaine en cours, j'ai un copain qui l'a fait.
    Ben logiquement si, ca devra marcher

  6. #6
    Membre Expert
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Par d�faut
    Arf, c'est pas assez compliqu� pour moi, lol, nan, t'as raison, si j'avais eu cette fonction, je me serais fais moins chier.... et dis moi, pouquoi -1?
    +1 pardon

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    54
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 54
    Par d�faut
    Citation Envoy� par la drogue c'est mal
    avec COleDateTime::GetDayOfYear ca te retourne le nombre de jour ecoul� dans l'ann�e configurer.
    Arf, c'est quand meme bcp plus simple kom ca!!
    Voila, j'ai essay� ca :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    COleDateTime date2=COleDateTime::GetCurrentTime();
    int semaine2=(date2.GetDayOfYear())/(7);
    Citation Envoy� par la drogue c'est mal
    en divisant ce chiffre par 7 tu as le num�ro de semaine -1
    il me sort 46, donc j'en d�duis que l'on dois faire +1 et non pas -1, nan?

    EDIT : c'est bien ce kil me semblait

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    54
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 54
    Par d�faut
    Aller, j'adopte cette solution ki est kan meme bcp moins longue que le mienne, mais si qq1 � une solution pour l'autre, ca m'interesse aussi, j'aimerais bien comprendre.....
    Merci � vous 8)

  9. #9
    Membre �prouv�

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    68
    D�tails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 68
    Par d�faut
    Bonjour,

    Il me semble qu'il y a encore un probleme, car si vous faites
    le calcul pour le lundi de cette semaine, le numero de semaine
    sera different que si vous faites le calcul pour le vendredi.
    Il faut tenir compte du type de jour du 1er janvier car le numero de
    semaine change le lundi.

    Cordialement

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    54
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 54
    Par d�faut
    En effet, je viens de faire les tests.....
    Je v y r�fl�chir, je vous tiens au courant.
    Si qq1 � une id�e?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    54
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 54
    Par d�faut
    C bon, c'est corrig� en ajoutant ca :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    COleDateTime date_janv(date.GetYear(), 0, 1,0,0,0);
    //initialise date_janv au 1er janvier de l'année en cours

    et en remplacant ca :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    int semaine=(date.GetDayOfYear())/(7);
    par ca :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    int semaine=((date.GetDayOfYear()+(date_janv.GetDayOfWeek()))/(7))+1;
    //en soustrait les jours passés de la semaine au 1er janvier
    Voil�!
    Merci � vous tous ;o)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [XL-2007] Trouver le num�ro de la semaine en cours
    Par apt dans le forum Macros et VBA Excel
    R�ponses: 11
    Dernier message: 15/08/2012, 00h31
  2. [VB.NET] Obtenir le num�ro de la semaine d'une date
    Par alain&&thomas dans le forum Windows Forms
    R�ponses: 9
    Dernier message: 07/09/2009, 17h54
  3. Num�ro de la semaine selon la norme ISO
    Par steelidol dans le forum MS SQL Server
    R�ponses: 5
    Dernier message: 02/02/2006, 15h05
  4. R�ponses: 1
    Dernier message: 16/09/2005, 14h07
  5. Comment r�cup�rer le num�ro de la semaine ?
    Par claude dans le forum Langage
    R�ponses: 7
    Dernier message: 25/06/2004, 15h06

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