Date

Signaler
Messages postés
48
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
6 octobre 2005
-
Messages postés
452
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
-
Bonjour,

je voudrais récupérer (en C++) la date d'aujourd'hui sous le format suivant: 09/09/05, quelle fonction je dois utiliser?

Merci pour votre réponse.

3 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
sous Windows:
GetDateFormat()

ciao...
BruNews, MVP VC++
Messages postés
91
Date d'inscription
vendredi 10 octobre 2003
Statut
Membre
Dernière intervention
12 octobre 2006

tu peut aussi utiliser la clase COleTime ou un truc comme ca. je me rappel plus exactement le nom précis de la classe.
Messages postés
452
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
19 décembre 2008
10
Une petite méthode de prog pour résoudre le problème.



<hr size="2" width="100%">typedef enum e_format

{

JJMOISYYYY,

JJMMYYYY,

MMYYYY,

MOISYYYY

} e_dateFormat;



BOOL isBisextile(LONG year)

{

if (((year % 4) == 0) && (((year % 100) != 0) || ((year % 400) == 0)))

return TRUE;

return FALSE;

}



int getNumberDay_Month(int month, int year)

{

const int nbDayMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

int ndays;



ndays = nbDayMonth[month - 1];

if (isBisextile(year) && (month == 2))

ndays++;

return(ndays);

}



char *SYSTEMTIMEFormat(SYSTEMTIME time, e_dateFormat dateFormat, char *separator)

{

char buffer[256];

const char *month[] = {"Janvier", "Février", "Mars",
"Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre",
"Novembre", "Décembre"};



switch (dateFormat)

{

case JJMOISYYYY:

wsprintf(buffer, "%i%s%s%s%i",
time.wDay, separator, month[time.wMonth - 1], separator, time.wYear);

break;

case JJMMYYYY:

wsprintf(buffer, "%i%s%02i%s%i",
time.wDay, separator, time.wMonth, separator, time.wYear);

break;

case MMYYYY:

wsprintf(buffer, "%02i%s%i", time.wMonth, separator, time.wYear);

break;

case MOISYYYY:

wsprintf(buffer, "%s%s%i", month[time.wMonth - 1], separator, time.wYear);

break;

default:

return NULL;

}

return strdup(buffer);

}


char *getToday(e_dateFormat dateFormat, char *separator)

{

SYSTEMTIME time;



GetLocalTime(&time);

return SYSTEMTIMEFormat(time, dateFormat, separator);

}



<hr size="2" width="100%">Voila une méthode pour faire ce que tu demandes.

L'appel à faire est; today = getToday(JJMMYYYY, "/");

avec today déclaré comme un char*.



Mais je pense que la méthode de brunews est bien mieux. Merci à lui
d'ailleurs, je ne connaissais pas cette fonction, c'est pourquoi
j'avais développé ce jeu de fonctions.



Il faudrait voir également voir à ne pas retourné une chaine de
caractere, mais à passer un pointeur sur cette chaine dans la fonction.

Ainsi le programmeur saura qu'il doit la libérer. Alors que comme ca, il peut facilement oublier.



Il faudrait egalement voir une gestion du séparateur plus performante.
Le programme risque en effet de planter si je ne donne pas de
separateur à la chaine. Peut etre un séparateur par défaut si je n'en
donne pas.



Mais la fonction GetDateFormat fait la meme chose, alors maintenant, je ne sais plus trop quoi choisir!!!

Peut etre refaire mes fonctions avec GetDateFormat, mais alors ou est l'intéret d'avoir ces fonctions????



Vive le C
Tchao
[mailto:julienbj@hotmail.com Savon]