swife
Septembre 8, 2006, 3:20
1
Bon voilà,
Je cherche à trouver la date du lundi pour une semaine donnée et une année donnée.
Le tout fait en pur C, oui dans un autre langage j’aurai déjà trouvé.
Etant donné que mon C est très très rouillé… et que je ne peux me tourner vers autre chose, je fais appel à votre aide chers clubiciens
Merci pour votre aide
#include <stdio.h>
#include <time.h>
int DATE_getDay(struct tm * cur_time, char * day)
{
if (mktime(cur_time) == -1)
return 0;
else {
(void)strftime(day, 16, "%A", cur_time);
return 1;
}
return 0;
}
int main(void)
{
struct tm time_str;
char daybuf[20];
time_str.tm_year = 2006 - 1900;
time_str.tm_mon = 9 - 1;
time_str.tm_mday = 8;
time_str.tm_hour = 0;
time_str.tm_min = 0;
time_str.tm_sec = 1;
time_str.tm_isdst = -1;
DATE_getDay(&time_str,daybuf);
printf("jour = %s\n",daybuf);
getch();
return 0;
}
Fait rapido, test de ce jour (doit afficher vendredi).
swife
Septembre 8, 2006, 3:58
3
OK, merci KarlKox pour ton aide
Mais je pense pas que ça réponde à ma problématique, donc je vais mieux décrire mon problème.
Voilà la seule information que je connaisse c’est le numéro de semaine de mon année.
Donc à partir de là je cherche à retrouver la date du lundi jj/mm/yyyy de cette semaine.
un petit exemple :
donc la semaine 2 de cette année me retourne le 09/01/2006
#include <stdio.h>
#include <time.h>
int DATE_getWeek(struct tm * cur_time, char * week)
{
if (mktime(cur_time) == -1)
return 0;
else {
(void)strftime(week, 8, "%W", cur_time);
return 1;
}
return 0;
}
int DATE_getDay(struct tm * cur_time, char * day)
{
if (mktime(cur_time) == -1)
return 0;
else {
(void)strftime(day, 32, "%A %d %B %Y", cur_time);
return 1;
}
return 0;
}
int main(void)
{
struct tm time_str;
char daybuf[32];
char weekbuf[8];
int semaine, mois, jour;
int found;
semaine = 36;
mois = (semaine/4);
if (mois <= 0)
mois = 1;
jour = 1;
found = 0;
while (!found)
{
time_str.tm_year = 2006 - 1900;
time_str.tm_mon = mois - 1;
time_str.tm_mday = jour;
time_str.tm_hour = 0;
time_str.tm_min = 0;
time_str.tm_sec = 1;
time_str.tm_isdst = -1;
DATE_getWeek(&time_str,weekbuf);
if (atoi(weekbuf) == semaine)
{
while (1)
{
DATE_getDay(&time_str,daybuf);
if (strstr(daybuf,"Monday"))
{
found = 1;
break;
}
jour++;
}
}
jour++;
}
printf("jour = %s\n",daybuf);
getch();
return 0;
}
C’est crade mais ça fonctionne :ane:
swife
Septembre 8, 2006, 11:33
5
Merci pour ton aide précieuse karlkox,
j’ai testé même si c’est crade, le principale c’est que ça marche, je vais tout de même essayer d’optimiser. L’idée est là, encore merci