cs_PHIL63
Messages postés76Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention10 août 2010
-
12 août 2006 à 10:17
cs_PHIL63
Messages postés76Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention10 août 2010
-
3 sept. 2006 à 07:40
Bonjour à toutes et à tous,
Voilà ma question :
Existe-t-il une fonction sous delphi 6 qui renvoi l'interval précis entre deux dates (Années, mois, jours, heures, minutes, secondes, millisecondes) ?
J'ai bien trouvé des fonctions du style DaysBetween etc mais aucune ne renvoi l'interval complet.
Si une bonne âme avais une petite idée ou une petite fonction sous la main....
Merci.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 15 août 2006 à 00:54
J'ai posté un code qui ressemble à ce que tu essayes de faire, mais sans les heures, minutes et secondes. Peut-être plus tard ?
C'est ici :
GetYMDBetween() - Différence entre 2 dates (Années, Mois, Jours) Bonne prog' pour ceux qui y sont encore à c't'heure, lol
cs_neko
Messages postés135Date d'inscriptionjeudi 14 août 2003StatutMembreDernière intervention12 octobre 20061 12 août 2006 à 13:08
Ben si c'est des TDateTime, il suffit de les soustraire l'une à l'autre, ensuite tu peux la formater ( FormatDate ) pour avoir une chaine de caractères lisible.
cs_PHIL63
Messages postés76Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention10 août 2010 13 août 2006 à 19:22
Bonjour,
Bon après un test, ça me donne un résultat plus que folklorique même après formatage.
Je vais quand même chercher dans cette voie.
Merci quand même.
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 14 août 2006 à 13:04
Salut Philippe,
Tu peux te créer une fonction(procedure) dans laquelle tu compares tes 2 dates avec les procedures DecodeDate et DecodeTime. Voir Aide Delphi.
DecodeDate(Date1, Year1, Month1, Day1);
DecodeDate(Date2, Year2, Month2, Day2);
IntervalYear:= Year2 - Year1;
...
et tu fais la même chose avec DecodeTime.
Tu vas donc avoir 6 valeurs numériques avec lesquelles tu fais ce que tu veux.
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 14 août 2006 à 13:31
Salut Phil,
Quel est l'intérêt de ce calcul ? Est-ce que c'est pour faire un truc dans le genre "Vous êtes né depuis 20 ans 3 mois 12 jours 9 heures 1 minute 59 secondes et 857 millisecondes" ?
Sinon, je vois pas trop l'intérêt du calcul, j'ai un peu de mal à m'investir dans la recherche de la solution...
Emandhal
Messages postés194Date d'inscriptiondimanche 2 mars 2003StatutMembreDernière intervention10 octobre 20063 15 août 2006 à 09:56
J'ai eut besoin un jour d'un calcul de ce genre...
Je donne mon code, il renvoie le temps entre 2 dates sauf MSec (j'en avais pas besoin) en string (adaptable facilement en Year..Seconds). Par contre ma solution donne le résultat avec les semaines... à toi d'adapter le code...
Function BetweenTimeToExtendStr(aBeginTime, aEndTime: TDateTime): String;
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 3 sept. 2006 à 00:43
Salut Phil,
Tu es toujours sur le coup ? As-tu résolu le problème ?
Je suis en train de déboguer la démonstration d'une fonction qui calcule la différence en année, mois, jours, heures, minutes, secondes entre deux dates, et qui remplacera ou complètera le code que j'ai posté précédemment.
Ce déboguage me pose des problèmes, mais la fonction elle-même me semble au point.
En fait, elle est basée sur la même approche que la précédente.
Si ça t'intéresse, si tu n'as pas le temps d'attendre la mise à jour de
mon code, ou que tu as envie de tester la fonction, je l'envoie ici.
cs_PHIL63
Messages postés76Date d'inscriptiondimanche 9 février 2003StatutMembreDernière intervention10 août 2010 3 sept. 2006 à 07:40
Salut japee,
j'ai utilisé une autre méthode, elle ne doit pas être parfaite mais elle suffira bien pour le moment...
merci encore pour toutes tes réponses.