Bonjour,
Je suis entrain de coder grosso-modo l'équivalent du rôle de la fonction difftime() et afin de valider le fonctionnement de mon code, je m'appuie sur l'utilisation du résultat de cette fonction.
Pour cela, je me suis inspiré de la FAQ pour la soustraction d'une date.
Ci-dessous le code:
Le problème c'est que j'ai l'impression que la fonction difftime() n'est pas fiable, à moins que j'ai oublié un truc dans le code au dessus.
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 int main(void) { struct tm date1, date2; date1.tm_mday = 10; date1.tm_mon = 2; date1.tm_year = 110; date1.tm_hour = 12; date1.tm_min = 0; date1.tm_sec = 0; date2.tm_mday = 15; date2.tm_mon = 5; date2.tm_year = 110; date2.tm_hour = 12; date2.tm_min = 0; date2.tm_sec = 0; printf("Il s'est coule %g secondes.\n", difftime(mktime(&date2), mktime(&date1))); // date2 - date1 return 0; }
En effet, le résultat affiché sera ici: 8 380 800 secondes.
Or si j'utilise l'outil en ligne suivant sur le site: http://www.toolize.com/tools/free-on...alculator.aspx, le résultat est: 8,121,600 Seconds.
Résultat que je retrouve notamment dans ma propre fonction codée.
Au final, je constate donc que le résultat fourni par difftime est en avance de 3 jours sur le résultat précédent.
De ce que j'ai pu constater lors de mes différents tests et qui m'a fait perdre du temps lors de ma petite validation, c'est que:
1) Si on compare deux dates avec un mois de 31 jours ou deux dates avec un mois de 30 jours, aucun décalage.
2) Si on compare une date avec un mois de 31 avec une autre avec un mois de 30 (et inversement), on observera un décalage de 1 jour.
3) Si on compare une date avec le mois de février (de 28 jours par ex) et une date avec un mois de 30 jours, on aura 2 jours de décalage et 3 jours si on compare avec un mois de 31 jours.
Une erreur de ma part serait plus viable qu'un difftime() buggé mais qu'en pensez vous?
Partager