Nombre de jour

Signaler
Messages postés
16
Date d'inscription
dimanche 15 avril 2012
Statut
Membre
Dernière intervention
3 mars 2013
-
Messages postés
273
Date d'inscription
samedi 13 juin 2009
Statut
Membre
Dernière intervention
18 avril 2015
-
salut
voila mon probleme jai 2date date debut et date fin je veut calculer la difference entre les deux date (le nombre da jour)
exp date debut 01/01/2012 et date fin 15/05/2012 le nombre de jour (janvier31+fevrier29+mars31+avril30+mai15=136jour)

7 réponses

Messages postés
615
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
3
salut,

var
  D1, D2 : TDateTime; 
  J1,J2, M2, M2,A1,A2 : Word; 
  Delta : Extended; 
 begin 
  D1 := EncodeDate(A1, M1, J1); 
  D2 := EncodeDate(A2, M2, J2); 
  Diff := DaysBetween(D2, D1);  
 end;


Jean_Jean
Messages postés
615
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
3
Euh,

Diff = Delta erreur de transcription...

Jean_Jean
Messages postés
107
Date d'inscription
lundi 30 mai 2011
Statut
Membre
Dernière intervention
29 avril 2013
1
salut
voici un petit code j’espère que ça va marché
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
 i := Trunc (D2.Date) - Trunc (D1.Date);
 edit1.Text:=inttostr(i);
end;

@+
Messages postés
615
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
3
@ walidlam

Oui c'est vrai que les décimales de dates sont des fractions de jours, je rectifie donc ton code car D2.Date n'est pas valide avec TDate.
Les deux solutions se valent. Il faudrait vérifier au niveau performance. A priori je ne vois pas de problème de sécurité, sauf à vérifier les années bisextiles et les valeurs de J.


var
  D1, D2 : TDateTime; 
  J1,J2, M1, M2,A1,A2 : Word; 
  Diff   : Extended; 
 begin 
  J1:= 29; M1:=2; A1:=2012;
  J2:= 28; M2:=2; A2:=2013;
  D1 := EncodeDate(A1, M1, J1); 
  D2 := EncodeDate(A2, M2, J2); 
  Diff := DaysBetween(D2, D1);
  Edit1.Text := FloatToStr(Diff);
  // ou
  Edit.Text := Trunc(D2 - D1);  
 end;



Jean_Jean
Messages postés
107
Date d'inscription
lundi 30 mai 2011
Statut
Membre
Dernière intervention
29 avril 2013
1
salut
@Jean_Jean
dans mon code d1 et d2 //TDateTimePicker
J1:= 29; M1:=2; A1:=2012;
J2:= 28; M2:=2; A2:=2013;
d1 =(29/02/2012) et d2=(28/02/2013) difference =365 jours
begin

 edit1.Text:=inttostr(Trunc (D2.DateTime-D1.DateTime));
//avec meme date =365 meme resultat
end;

mais il faut ajouter D.DateTime ou D.date
merci @+
Messages postés
265
Date d'inscription
lundi 27 octobre 2003
Statut
Membre
Dernière intervention
19 juillet 2021
13
Salut,
Uses DateUtils;
...
Edit1.Text := IntToStr(DaysBetween(D1.Date,D2.Date)));
...

@+yanb
Messages postés
273
Date d'inscription
samedi 13 juin 2009
Statut
Membre
Dernière intervention
18 avril 2015
10
Bonjour,
Pourquoi vous casser la tête ? Les TDateTime sont des double dans lesquels la partie entière sont les jours et décimale les fractions de jour.
njJour := int(D1)-int(D2);
et non int(D1-D2) car si il y a une partie décimale (des heures, min, sec, ...) il peut y avoir un jour en moins (si frac(D2) > frac(D1)

Salut.
solilog