- #include <time.h>
- #include <string>
-
- /*
- Fonction date similaire a celle du Php
- on lui passe en parametre le format de la date que l on veut:
- h = heure
- i = minutes (le m est déja pris par mois)
- s = secondes
- d = le jour du mois, en chiffres
- D = le jour de la semaine, en lettres (ex = Lundi)
- m = le mois en chiffre
- M = le mois en lettres (ex = Janvier)
- y = l année courante (ex = 2004)
-
- Exemple d appel:
- date ("h:i:s").c_str() donne 23:15:21
- */
- std::string date (std::string format)
- {
- std::string szDate="";
- time_t raw;
- struct tm* timeinfo;
-
- // recupere le temps ecoule de le 1er janvier 1970
- time(&raw);
- // puis obtient une structure tm qui contient toutes les infos dont on a besoin
- timeinfo = localtime(&raw);
-
- if (!timeinfo)
- return "";
-
- // Definition de quelques trucs utiles :D
- static char* days[]={"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
- static char* months[]={"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin",
- "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"};
-
- char buffer[32]; // conversions via itoa
-
- for (int i = 0; i < format.size();i++)
- {
- switch (format[i])
- {
- // Heure
- case 'h':
- itoa(timeinfo->tm_hour, &buffer[0], 10);
- szDate += buffer;
- break;
- // minute
- case 'i':
- itoa(timeinfo->tm_min, &buffer[0], 10);
- szDate += buffer;
- break;
- // secondes
- case 's':
- itoa(timeinfo->tm_sec, &buffer[0], 10);
- szDate += buffer;
- break;
- // jour (chiffre)
- case 'd':
- itoa(timeinfo->tm_mday, &buffer[0], 10);
- szDate += buffer;
- break;
- // jour (lettres)
- case 'D':
- szDate += days[timeinfo->tm_wday];
- break;
- // mois (chiffre)
- case 'm':
- itoa(timeinfo->tm_mon, &buffer[0], 10);
- szDate += buffer;
- break;
- // mois (lettres)
- case 'M':
- szDate += months[timeinfo->tm_mon];
- break;
- // annee (chiffre)
- case 'y':
- itoa(timeinfo->tm_year+1900, &buffer[0], 10);
- szDate += buffer;
- break;
- // Si on trouve un caractere autre, on l ajoute au résultat
- default:
- szDate += format[i];
- break;
- }
- }
-
- return szDate;
- }
-
- int main ()
- {
- printf ("%s\nIl est actuellement %s\n", date("d/m/y = D d M y").c_str(), date("h:i:s").c_str());
- return 0;
- }
#include <time.h>
#include <string>
/*
Fonction date similaire a celle du Php
on lui passe en parametre le format de la date que l on veut:
h = heure
i = minutes (le m est déja pris par mois)
s = secondes
d = le jour du mois, en chiffres
D = le jour de la semaine, en lettres (ex = Lundi)
m = le mois en chiffre
M = le mois en lettres (ex = Janvier)
y = l année courante (ex = 2004)
Exemple d appel:
date ("h:i:s").c_str() donne 23:15:21
*/
std::string date (std::string format)
{
std::string szDate="";
time_t raw;
struct tm* timeinfo;
// recupere le temps ecoule de le 1er janvier 1970
time(&raw);
// puis obtient une structure tm qui contient toutes les infos dont on a besoin
timeinfo = localtime(&raw);
if (!timeinfo)
return "";
// Definition de quelques trucs utiles :D
static char* days[]={"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
static char* months[]={"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin",
"Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"};
char buffer[32]; // conversions via itoa
for (int i = 0; i < format.size();i++)
{
switch (format[i])
{
// Heure
case 'h':
itoa(timeinfo->tm_hour, &buffer[0], 10);
szDate += buffer;
break;
// minute
case 'i':
itoa(timeinfo->tm_min, &buffer[0], 10);
szDate += buffer;
break;
// secondes
case 's':
itoa(timeinfo->tm_sec, &buffer[0], 10);
szDate += buffer;
break;
// jour (chiffre)
case 'd':
itoa(timeinfo->tm_mday, &buffer[0], 10);
szDate += buffer;
break;
// jour (lettres)
case 'D':
szDate += days[timeinfo->tm_wday];
break;
// mois (chiffre)
case 'm':
itoa(timeinfo->tm_mon, &buffer[0], 10);
szDate += buffer;
break;
// mois (lettres)
case 'M':
szDate += months[timeinfo->tm_mon];
break;
// annee (chiffre)
case 'y':
itoa(timeinfo->tm_year+1900, &buffer[0], 10);
szDate += buffer;
break;
// Si on trouve un caractere autre, on l ajoute au résultat
default:
szDate += format[i];
break;
}
}
return szDate;
}
int main ()
{
printf ("%s\nIl est actuellement %s\n", date("d/m/y = D d M y").c_str(), date("h:i:s").c_str());
return 0;
}