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 :

[Delphi 4] Comment obtenir une date en fonction d'un muméro de semaine ?


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut [Delphi 4] Comment obtenir une date en fonction d'un muméro de semaine ?

    Bonjour tout le monde

    Est ce que quelqu'un connait une fonction qui retourne la date d'un numéro de semaine ?

    J'ai recherché dans la FAQ et dans le forum, je n'ai rien trouvé

    Merci
    A+

    windows 10 / DEBIAN 7.9 / Etc...

  2. #2
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    Bonjour,

    As-tu été yeuter là aussi ?
    http://delphi.developpez.com/faq/?pa...#weekoftheyear

    @+

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut

    Salut,

    J'en viens.

    Mais moi c'est en fonction d'un numéro de semaine, que je souhaieterais obtenir la date du premier jour de la semaine

    Par exemple : pour la semaine n°1 ==> 1er janvier 2006

    A+

    windows 10 / DEBIAN 7.9 / Etc...

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Essaie la bibliothèque O_Fonctions qui contient plein de fonctions sur les dates...

    A rechercher sur
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut


    J'ai déja regardé dans O_FONCTION, je n'ai rine trouvé.

    Par contre j'ai trouvé une fonction en PHP, je vais m'en inspirer.

    je reviendrais pour vous rendre compte.

    A+

    windows 10 / DEBIAN 7.9 / Etc...

  6. #6
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Salut CharleLéo

    Etant donné que la première semaine calendaire de l'année est celle qui comprend le premier jeudi de l'année (la première semaine de l'année qui comprend au moins quatre jours), il suffit d'écrire une fonction qui commence par déterminer la date de ce 1er jeudi...
    Reste à ajouter autant de fois 7 jours que le n° de la semaine (moins un) que tu cherches à dater et tu obtiendras la date du jeudi de la semaine en question
    ENFANTIN !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function datesemaine(semaine:byte;annee:integer):TDate;
    var
      c:byte;
    begin
      for c:=1 to 7 do
      if dayoftheweek(encodedate(annee,1,c))=4
      then result:=encodedate(annee,1,c)+((semaine-1)*7);
    end;
    J'ai testé, ça marche

    Bonne prog
    Choisir, c'est renoncer...

  7. #7
    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'unité dateutils (fournit avec delphi) tu as tout ce qu'il te faut pour la gestion des dates

    Exemple :

    UneDate := EncodeDateWeek (UneAnnee, une Semaine,LeJourDelaSemaine) : Renvoie un TDateTime qui représente un jour d'une semaine d'une année spécifiés
    Modérateur Delphi

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

  8. #8
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Citation Envoyé par Malatar
    Dans l'unité dateutils (fournit avec delphi) tu as tout ce qu'il te faut pour la gestion des dates
    En Delphi 4 aussi ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  9. #9
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Citation Envoyé par CharleLéo


    J'ai déja regardé dans O_FONCTION, je n'ai rine trouvé.
    Citation Envoyé par O_fonctions v2.09
    o_WeekFirstDay renvoie le lundi d'une semaine donnée.

    ex o_WeekFirstDay( 9 ) => 25-02-2002
    N'est-ce pas ça que tu cherches ?
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  10. #10
    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
    J'ai récemment eu besoin de ce type de fonctions, voici celles que je te propose, les explications suivent :

    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
     
    Uses DateUtils;
     
    ...
     
    function DMY_to_Date(ADay,AMonth,AYear:Word):TDate;
    begin
      result:=EncodeDate(AYear,AMonth,ADay);
    end;
     
    function DowWY_to_Date(ADayOfWeek,AWeek,AYear:Word):TDate;
    begin
      result:=EncodeDateWeek(AYear,AWeek,ADayOfWeek);
    end;
     
    procedure Date_to_DMY(ADate:TDate;var ADay,AMonth,AYear:word);
    begin
      DecodeDate(ADate,AYear,AMonth,ADay);
    end;
     
    procedure Date_to_DowWY(ADate:TDate;var ADayOfWeek,AWeek,AYear:word);
    begin
      DecodeDateWeek(ADate,AYear,AWeek,ADayOfWeek);
    end;
     
    procedure DMY_to_DowWY(ADay,AMonth,AYear_DMY:Word;var ADayOfWeek,AWeek,AYear_DowWY:word);
    var ADate:TDate;
    begin
      ADate:=DMY_to_Date(ADay,AMonth,AYear_DMY);
      Date_to_DowWY(ADate,ADayOfWeek,AWeek,AYear_DowWY);
    end;
     
    procedure DowWY_to_DMY(ADayOfWeek,AWeek,AYear_DowWY:Word;var ADay,AMonth,AYear_DMY:word);
    var ADate:TDate;
    begin
      ADate:=DowWY_to_Date(ADayOfWeek,AWeek,AYear_DowWY);
      Date_to_DMY(ADate,ADay,AMonth,AYear_DMY);
    end;
    Dans mes fonctions j'ai considéré 3 systèmes de notation de date :
    - Le système Date qui correspond au type TDate de Delphi
    - Le système DMY qui correspond au système Day/Month/Year classique (n° Jour du mois/mois/semaine séparés)
    - Le sytème DowWY qui correspond au système : n°de jour dans la semaine/n° de semaine/année.

    Pour obtenir le premier jour de la semaine (Lundi) n°25 de 2006 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var ADate:TDate;
    begin
      //En date Delphi
      ADate := DowWY_to_Date(1,25,2006);
      //en Jour/mois/semaine
    end;

    Attention, l'année dans le système DowWY, n'est pas forcément la même que dans le système DMY !

    par exemple, le Dimanche 1er Janvier 2005, se traduit tout naturellement en 1/1/2005 dans le système DMY classique, mais en système DowWY, c'est le dernier jour, de la dernière semaine de 2004 (autrement dit, le 7/53/2004)!

    De même, le 1/1/2005 (système DowWY : Lundi, semaine 1 de 2005) correspond au 2/1/2005 (DMY : Lundi 2 Janvier 2005).

    Bref t'emmèle pas les pinceaux

    Donc voici passés en revue les paramètres attendus par les fonctions :
    * Dans le système Delphi :
    - ADate : un TDate.
    * Dans le système DMY :
    - ADay: Le n° de jour dans le mois (de 1 à 31 en général)
    - AMonth : Le n° de mois (de 1 à 12)
    - AYear_DMY: L'annnée calendaire normale
    * Dans le système DowWY :
    - ADayOfWeek : Le n° de jour dans la Semaine : Lundi=1, Mardi=2, etc
    - AWeek : le numéro de semaine (de 1 à 53)
    - AYear_DowWY : L'année dans ce système (des fois differente de l'année calendaire)


    Bref, j'espère que tout ça te sera utile
    Bidouilleuse Delphi

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2004
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 251
    Points : 118
    Points
    118
    Par défaut


    Bonjour à tout le monde et merci pour vos réponse.

    Citation Envoyé par qi130
    Citation Envoyé par CharleLéo


    J'ai déja regardé dans O_FONCTION, je n'ai rine trouvé.
    Citation Envoyé par O_fonctions v2.09
    o_WeekFirstDay renvoie le lundi d'une semaine donnée.

    ex o_WeekFirstDay( 9 ) => 25-02-2002
    N'est-ce pas ça que tu cherches ?
    effectivement c'est cela que je recherche, désolé je ne l'avais pas vu

    Merci tout le monde

    A+

    windows 10 / DEBIAN 7.9 / Etc...

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

Discussions similaires

  1. [XL-2010] Obtenir une date en fonction du numéro de semaine
    Par Ska60 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 24/09/2022, 16h36
  2. Réponses: 6
    Dernier message: 25/09/2006, 14h51
  3. comment obtenir une date precedente ?
    Par MAJIK_ENIS dans le forum Langage
    Réponses: 9
    Dernier message: 08/06/2006, 16h53
  4. comment obtenir une date dans une storeproc?
    Par Dnx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/10/2005, 15h19
  5. Obtenir des dates en fonction du n° de la semaine
    Par coeur74 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 10/02/2005, 13h42

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