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

 Delphi Discussion :

manipulation de la date


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut manipulation de la date
    salam


    c'est simple je cherche des fonction sur les dates qui me permette d’avoir la date du début et de la fin de la semaine,mois,trimestre et semestre en cours .

    pour avoir le rebut du mois j'ai utilisé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debutmois:=FormatDateTime('01/mm/yyyy',now);
    pour la fin du mois j'ai utilisé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    findumois:=FormatDateTime('30/mm/yyyy',now);
    le problème c'est qu'il y a des mois a 31 jours et février 28 jours et 1 fois sur 4 ans il a 29 jours j'ai pensé a faire des condition si mm est dans (01,03,05...11)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    findumois:=FormatDateTime('31/mm/yyyy',now);
    mais ça coincera au mois février.

    pour le trimestriel et le semestriel j'ai pensé a des conditions aussi
    si mm est dans (01,02,03)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    debuttrimestre:=FormatDateTime('01/01/yyyy',now);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fintrimestre:=FormatDateTime('31/03/yyyy',now);
    même chose pour le semestre mais c'est pas trop pratique et précis j'aimerai bien savoir s'il y a des fonction qui me faciliteront la tache et merci d'avance .

  2. #2
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 522
    Par défaut
    Bonjour,

    pour la date de fin de mois tu as une fonction ici

    A+

    Charly

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    Bonjour,

    pour la date de fin de mois tu as une fonction ici

    A+

    Charly
    merciii pour fin du mois ça marche impeccable je vais essayer de reproduire la fonction de manière qu'elle me sorte les fins du semestre et trimestre mais le gros problème c'est les début et fin de semaine.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut
    pour fin de trimestre j'ai essayé ça :
    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
    function getFinDutrimestre(_date: TDateTime):TDateTime;
    var d,m,y: word;
     
      function getMaxmonth(mois: word):word;
      begin
        case mois of
          1,2,3: result := 1;
          4,5,6: result := 4;
          7,8,9: result := 9;
          else result := 12;
        end;
      end;
     
    begin
      decodeDate(_date,y,m,d);
      result := encodeDate(y,getMaxmonth(m),31);
    end;
    mais j'ai une erreur :argument incorrect pour l'encodage de date ...

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 159
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 159
    Par défaut
    Citation Envoyé par adelcrb Voir le message
    (...) mais j'ai une erreur :argument incorrect pour l'encodage de date ...
    Normal, le 31 juin n'existe pas, pas plus que le 31 septembre

    Et je me faisais la réflexion suivante, en lisant le nom de ta fonction, getFinDutrimestre : y a pas une erreur, là ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          1,2,3: result := 1;
          4,5,6: result := 4;
    Je pense que ça devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          1,2,3: result := 3;
          4,5,6: result := 6;
    au vu des lignes des deux autres "result".

    Enfin, j'ai pas lu tout le code, alors peut-être que je dis une bêtise, à voir...

    Par contre, ton histoire de 31 ça va foirer que tu prennes 4 ou 6, tu l'as vu.
    C'est pas comme ça qu'il faut calculer la fin d'un trimestre (mais je ne sais pas comment, et j'ai autre chose à faire...)

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2012
    Messages : 238
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Normal, le 31 juin n'existe pas, pas plus que le 31 septembre

    Et je me faisais la réflexion suivante, en lisant le nom de ta fonction, getFinDutrimestre : y a pas une erreur, là ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          1,2,3: result := 1;
          4,5,6: result := 4;
    Je pense que ça devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
          1,2,3: result := 3;
          4,5,6: result := 6;
    au vu des lignes des deux autres "result".

    Enfin, j'ai pas lu tout le code, alors peut-être que je dis une bêtise, à voir...

    Par contre, ton histoire de 31 ça va foirer que tu prennes 4 ou 6, tu l'as vu.
    C'est pas comme ça qu'il faut calculer la fin d'un trimestre (mais je ne sais pas comment, et j'ai autre chose à faire...)
    merci je vien de le corriger et ça donne
    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
    function getFinDutrimestre(_date: TDateTime):TDateTime;
    var d,m,y: word;
     
      function getMaxmonth(mois: word):word;
      begin
        case mois of
          1,2,3: result := 3;
          4,5,6: result := 6;
          7,8,9: result := 9;
          else result := 12;
        end;
      end;
     
    begin
      decodeDate(_date,y,m,d);
      case m of
       1,2,3,10,11,12:result := encodeDate(y,getMaxmonth(m),31);
        else result := encodeDate(y,getMaxmonth(m),30);
       end;
     
    end;

    maintenant il me reste que les date du weekend et croyez moi j'ai aucune de comment le faire.

  7. #7
    Membre actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2012
    Messages : 111
    Par défaut
    bon jour
    pour la fin du mois je vous propose cette methode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    form1.DateTimePicker1.Date := strtodate (FormatDateTime('01/mm/yyyy', IncMonth(DateTimePicker1.Date)))-1 ;
    end;
    en peux incremente une date comme ca
    alor mois je chercher le premier du mois suivent - une journé (-1)



    pour la fin du trimestre

    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
    procedure TForm1.Button2Click(Sender: TObject);
    var mois : word;
    begin
    mois := MonthOf(form1.DateTimePicker1.Date ) ;
    if mois < 4 then 
    DateTimePicker1.Date:= strtodate (FormatDateTime('31/03/yyyy',DateTimePicker1.Date))
    else
      if mois < 7 then 
    DateTimePicker1.Date:= strtodate (FormatDateTime('30/06/yyyy',DateTimePicker1.Date))
    else
      if mois < 10 then 
    DateTimePicker1.Date:= strtodate (FormatDateTime('30/09/yyyy',DateTimePicker1.Date))
    else
    DateTimePicker1.Date :=strtodate (FormatDateTime('31/12/yyyy',DateTimePicker1.Date));
     
     
    end;
    A+

  8. #8
    Invité de passage
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1
    Par défaut
    Bonjour tout le monde
    tout simplement pour avoir les dates de début et fin de semaine utilise la fonction DayOfTheWeek qui donne un résultat (1 au 7) ==> (Dimanche au samedi).
    et pour la fin de mois tout simplement trouve la date début de prochain mois - un jour tu aura la date de mois en cours et de cette façon tu peux calculer les date fin trimestre, semestre, ....

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

Discussions similaires

  1. Manipulation d'après date de fichier
    Par byloute dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 16/01/2008, 17h42
  2. [Dates] probleme avec la manipulation de la date
    Par leclone dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 12h29
  3. manipulation de la date ss java
    Par gnaoui_9999 dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 19/09/2006, 18h52
  4. [Dates] manipulation de champ date
    Par PAYASS59 dans le forum Langage
    Réponses: 9
    Dernier message: 23/02/2006, 11h13
  5. fonction c pour manipuler la structure date
    Par thomas_b dans le forum Windows
    Réponses: 4
    Dernier message: 28/07/2004, 16h28

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