Bonjour,

Résumé :
Je cherche à déterminer le jour précédent au jour en cours, afin de faire une sauvegarde périodique des données de la journée qui vient de s'écouler. La logique de la solution trouvée n'aboutit cependant pas au résultat escompté

Description du besoin :
Imaginons que durant le jour J du mois M de l'année Y, des données soient mises à jour périodiquement.
Dès que nous passant au jour suivant (J+1), le code doit appeler une nouvelle fonction pour sauver les données du jour J dans un fichier.
Pour cela, le jour J+1 doit déterminer quelle était la valeur du jour J.
Chaque mois n'étant pas identique, parfois, 28, 29, 30 ou 31 jours, il faut bien manipuler les dates pour ne pas se tromper.

Ce qui est sensé marcher, mais qui ne marche PAS :
Voilà, j'ai fait une petite routine qui cherche à tronquer 24h à la date actuelle (J+1). Pour cela, je cherche le temps écoulé en secondes depuis le 1/1/70, je retire les 24h (en secondes) et je converti en date et heure afin de récupérer le jour correspondant.
Sur le principe, c'est logique, mais la réalité me retourne TOUJOURS le jour J+1 au lieu de J !!

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
 
#include <windows.h>
#include <stdio.h>
#include <time.h>
 
#define	ONEDAY (60 * 60 * 24)		// 1 day in seconds
 
	int    		outtim	 // Output data.
	struct tm*	timeinfo;
	time_t	time_cur;
 
	// Get current time as seconds elapsed since midnight, January 1, 1970
	time(&time_cur);
	// Remove 1 day
	time_cur -= ONEDAY;
	// Convert updated time into numeric time format
	timeinfo = localtime(&time_cur);
	// Get day of corrected time (yesterday)
	outtim = timeinfo->tm_mday;
	// Return expected previous day
	return outtim;
Donc, la routine est appelé le jour J+1 (dès le changement de date de J à J+1) et malheureusement, je retrouve dans timeinfo->tm_mday la valeur de J+1 et non de J comme attendue !

Si quelqu'un à une idée de la où j'ai cafouillé...

Merci par avance,
T