Ben il remplace la fonction date() du php.
Les parametres de la fonction sont a peu pres les memes, la source est assez commentée pour que vous puissiez faire des equivalents.
On peut largement l optimiser (virer les std::string...), mais cette version est suffisament simple pour etre comprise par tous (je n ai pas massacré le code dans l espoir de gagner quelques cycles =D )
Source / Exemple :
#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;
}
Conclusion :
Ben voila, enjoy :)
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.