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

Langage Delphi Discussion :

les jours dans un moi et annee


Sujet :

Langage Delphi

  1. #1
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut les jours dans un moi et annee
    salut les amis

    je veux savoir combien des jours (28,29,30 ou 31) dans le moi mai 2010 par example ou un autre moi ou annee ...

    est ce que je peux faire ca avec TMonhCalendar ou avec un autre composant.


    merci d avance

  2. #2
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    l'unité de base de Delphi DateUtils renferme tous les trésors que tu cherches !
    un rapide tour dans l'aide de Delphi et tu verras toutes les fonctions qui t'intéressent !

  3. #3
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 561
    Points : 3 951
    Points
    3 951
    Par défaut
    Salut

    Je confirme le post de Sylvain à condition de travailler sur une version récente de Delphi (DateUtils est disponible depuis D6 je crois) sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NbJoursMMAA = EncodeDate(AA,MM+1,01)-EncodeDate(AA,MM,01);
    + F1 bien sûr

    Pas de jugement hâtif et n'interprétez pas mal cet avis, mais je suis toujours étonné de la propension de nombre de développeurs à utiliser un objet pour faire des calculs relativement simples.

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  4. #4
    Membre expérimenté
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Points : 1 339
    Points
    1 339
    Par défaut
    Citation Envoyé par e-ric
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NbJoursMMAA = EncodeDate(AA,MM+1,01)-EncodeDate(AA,MM,01);
    Et si on appelle ce code avec décembre ?

    Il y a une fonction pour ça : DaysInMonth

    Bloon
    A lire : Les règles du club
    Delphi : La FAQ - Articles

  5. #5
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 561
    Points : 3 951
    Points
    3 951
    Par défaut
    C'est vrai, j'ai été un peu vite

    DaysInMonth existe-t'elle dans toutes les versions de Delphi ?
    Ceci dit la correction de ma formule n'est pas difficile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function SimpleDaysInMonth(AA,MM: Word):  Integer;
    var 
       AAsuiv, MMsuiv: Word;    
    begin
      Result := 
        EncodeDate(AA + Ord(MM=12),((MM+1) mod 12)+1,01)
        - EncodeDate(AA,MM,01); 
    End; // SimpleDaysInMonth
    Bonne lecture !

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  6. #6
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut Daysinmonth
    merci

    j utilise la fonction Daysinmonth et ca marche et est ce que je peux avoir si aujourdhui un dimanche ou un lundi ou un autre

    et aussi merci

  7. #7
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 561
    Points : 3 951
    Points
    3 951
    Par défaut
    Quelle curiosité !

    F1 sur DayOfWeek(Date:TDateTime):Integer; !!

    Pour ta précédente question, on ne pouvait te répondre directement sans connaître la version de Delphi sur laquelle tu travailles car ces routines n'ont pas toujours existé.

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  8. #8
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Je conseil l'utilisation de DaysinAMonth(Annee,Mois) plutot que DaysinMonth(Mois) car ca prend pas en compte les années bissextile.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  9. #9
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut DayOf il marche pas
    salut

    Bon d abord j utilise Delphi 6...........

    Mais pour la fonction DayOf et DayOfWeek(10/10/2005) il marche pas et il me donne un resultat 29/01/1899 quand j utilise les fonctions percedentes et je sais pas pourquoi?


    merci d avance

  10. #10
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 561
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 561
    Points : 3 951
    Points
    3 951
    Par défaut
    Salut

    Nous t'avons donné des éléments de réponse, tu peux quand même consulter l'aide en ligne pour approfondir tes connaissances.

    Au vu des valeurs obtenues, tu as soustrait des dates ensembles (je me trompe ?). Peux-tu fourni le morceau de code incriminé ?

    DayOfWeek retourne un nombre compris entre 1 et 7 représentant les jours d'une semaine (dimanche, lundi... son rang si tu préfères) et non pas une date, si tu convertis la donnée retournée avec DateToStr qui attend une date, tu vas obtenir une date allant du 01/01/1900 au 07/01/1900 (Ah la belle époque!).

    Rappel : les TDateTime sont des réels (nombre de jour) dont 0 représente 31/12/1899, donc si tu passes le rang du jour retourné par DayOfWeek

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  11. #11
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut et comment je peux faire ca avec delphi
    salut

    bon alors quand je veux savoir le numero du jours Entre 0 et 31 dans une date comme 20/10/2006 ...

    pour moi je sais que c est le 20 mais comment je peux faire ca avec delphi

    merci

  12. #12
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Dans l'edi tu tappes DateUtils puis apres tu positionnes ton curseur dessus et tu appuies sur la tu auras toutes les commandes de gestions des dates à ta porté
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  13. #13
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut Re: DayOf il marche pas
    Citation Envoyé par aliwassem
    salut

    Bon d abord j utilise Delphi 6...........

    Mais pour la fonction DayOf et DayOfWeek(10/10/2005) il marche pas et il me donne un resultat 29/01/1899 quand j utilise les fonctions percedentes et je sais pas pourquoi?


    merci d avance
    A mon avis , tu n'as pas compris comment utiliser les TDateTime de Delphi !
    Le codage d'un TDateTime ne s'effectue pas en écrivant MaDate:=10/10/2005 en direct comme ça !

    Il faut d'abord que tu encode ta date comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaDate:=strtodate('10/10/2005');
    Puis que tu utilises ta date encodée comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MonJour:=DayOfWeek(MaDate);
    Quand tu écris DayOfWeek(10/10/2005), Delphi effectue d'abord l'opération 10 divisé par 10 divisé par 2005 qui donne un nombre réel qui est la représentation, en TDateTime, du 29 Janvier 1899 !

    Il faut donc que tu utilise impérativement les fonctions que t'offre Delphi pour faire la conversion entre TA représentation des Dates (Chaînes de caractères comme '10/10/2005', ou bien Triplets d'entiers Jour,Mois,Année) et SA représentation en TDatetime, sinon ça marche moins bien...
    Bidouilleuse Delphi

  14. #14
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut Re: et comment je peux faire ca avec delphi
    Citation Envoyé par aliwassem
    salut

    bon alors quand je veux savoir le numero du jours Entre 0 et 31 dans une date comme 20/10/2006 ...

    pour moi je sais que c est le 20 mais comment je peux faire ca avec delphi

    merci
    Salut,
    Dans l'aide de Delphi :
    Scinde TDateTime en valeurs Année,Mois et Jour.
    Unité
    SysUtils
    Catégorie
    routines date/heure
    Syntaxe Delphi :
    procedure DecodeDate(Date:TDateTime;var Year,Month,Day:Word);
    Syntaxe C++:
    externPACKAGE void __ fastcallDecodeDate(constSystem::TDateTimeDateTime,Word &Year,Word &Month,Word &Day);

    Description

    La procédure DecodeDate sépare la valeur spécifiée par le paramètre Date en valeurs Année,Mois et Jour.Si la valeur TDateTime donnée est une année négative (BC),l'année,le mois et le jour renvoient les paramètres initialisés àzéro.
    A toi de l'appliquer.

    A+
    On progresse .....

  15. #15
    Membre habitué Avatar de aliwassem
    Inscrit en
    Janvier 2004
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 293
    Points : 157
    Points
    157
    Par défaut DecodeDate
    salut

    j utilise la procedure DecodeDate et ca marche

    bon merci a tout

  16. #16
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    aliwassem,

    A l'avenir, il faudra que tu utilise et lise bien attentivement l'aide de Delphi. Car non seuelement, tu aurais pu trouver seule la réponse mais aussi, ça t'auras permis de l'apprehender beaucoup plus.

    Ce n'est qu'un conseil.

    Andry
    On progresse .....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Répartir les jours dans les mois d'une période
    Par Phanloga dans le forum Excel
    Réponses: 30
    Dernier message: 15/11/2012, 09h18
  2. [Dates] Calculer le nombre de jours dans le mois suivant...
    Par Life Hunter dans le forum Langage
    Réponses: 5
    Dernier message: 14/03/2006, 00h01
  3. Remplissage table avec les jours d'un mois
    Par tomtom25 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/05/2005, 14h32
  4. Jour dans le mois
    Par topolino dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/12/2004, 15h01
  5. [CR]nombre de jours dans un mois donné
    Par liberio dans le forum Formules
    Réponses: 2
    Dernier message: 20/04/2004, 16h54

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