begin process at 2010 02 09 22:17:39
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > EQUIVALENT A DATE () DU PHP

EQUIVALENT A DATE () DU PHP


 Information sur la source

 Description

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

  • #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;
}

 Conclusion

Ben voila, enjoy :)


 Sources du même auteur

Source avec Zip CONVERTISSEUR D'IMAGES
Source avec Zip BASECODE SDL/OPENGL
Source avec Zip LIBRAIRIE SON [FMOD]
Source avec Zip CONSOLE A LA QUAKE (DANS LA CONSOLE DOS!)
Source avec Zip Source avec une capture TRIANGLE RECURSIF

 Sources de la même categorie

Source avec Zip CLASSE MOMENT V2.0 par le_duche
CALCUL DATE DE PAQUES (DATE MOBILE) par steph12358
Source avec une capture VACCATION (AVEC FONCTION) CONSOLERIE, REMIX GCC par sebman
Source avec Zip Source avec une capture AFFICHER ET DIRE L'HEURE (REPONSE FORUM) par ndubien
Source avec Zip Source avec une capture ARRÊT AUTOMATIQUE DE WINDOWS. par patarotalexandre

Commentaires et avis

Commentaire de LordBob le 09/07/2004 12:46:07

juste un petit truc il manque:
#include &lt;stdio.h&gt; // pour printf

Commentaire de BlackGoddess le 09/07/2004 19:18:41

essaye de pas mélanger le C et le C++
mets des const

static char* days[]={"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};
=&gt;
static const char* days[]={"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"};

Commentaire de Cyberboy2054 le 10/07/2004 13:47:20

Merci pour les remarques.
Bizarrement, je crois que ca compile sans le stdio.h, mais n ayant ni pc ni source originale je ne peux verifier (ha, les joies du formattage qui est nécessaire au moment ou on le désire le moins...)
sinon pour le const tu as raison, c' est bien un oubli de ma part.
Autant pour moi, j' y penserais la prochaine fois :)

Commentaire de vecchio56 le 11/07/2004 15:36:03 administrateur CS

inclus &lt;cstdio&gt; plutot que &lt;stdio.h&gt;

Commentaire de gergalp le 01/10/2004 20:36:18

j'ai un petit probleme au niveau de la compilation avec dev-c++, meme en incluant stdio.h, ca marche pas

le log du compilateur:
24 D:\C++\time.cpp `itoa' undeclared (first use this function)

Commentaire de rosemarie302 le 15/11/2004 20:57:55

si c'est parce que le programme se lance, affiche l'heure et se referme tu doit mettre une boucle pour qu'il continue à afficher!!

#include <econio.h>


while(0<1){
  
clrscr() ;
gotoxy(5, 3) ;
printf ("%s\nIl est actuellement %s\n", date("d/m/y = D d M y").c_str(), date("h:i:s").c_str());
Sleep(1000);

}

Commentaire de levetot le 17/11/2004 23:07:29

gergalp

écrits tout simplement au début du prog :
#include <iostream>
using namespace std ;


hmm, on doit pouvoir inclure un autre fichier plus précis si tu n'utilises qu'itoa, mais avec celui là ça marchera ;-)

Commentaire de val3113 le 21/04/2006 14:55:55

Je faisais un p'tit test, parceque je suis sur un dossier en c (pas de c++) et on doit verifier lors de la saisie d'un champ date que la date entrée est bien inférieure a la date du jour, puis plus loin je devrais calculer la différence entre la date du jour et la date de naissance pour faire un controle sur l'age des membres.. soit, je voulais demander a propos de ce commentaire
"// recupere le temps ecoule de le 1er janvier 1970 "
ce serait pas plutot depuis 1900?
merci d'votre aide

Commentaire de val3113 le 21/04/2006 15:12:11

Je repost déja apparament pour l'année c'est bien depuis 1900, maintenant j'essaie et ca marche j'arive a récupérer l'année et le jour mais j'ai un probleme, on est le 26/04/2006 et
timeinfo->tm_mon
me retourne 3 au lieu de 4
je trouve pas pourquoi :/

Commentaire de val3113 le 21/04/2006 15:42:47

Voila finalement ce qu'il faut pour qu'il marche vraiment:
#include<stdio.h>
#include<time.h>

void main()
{
struct tm* timeinfo;
time_t raw;
int jour, mois, annee;

time(&raw);
timeinfo = localtime(&raw);

jour=timeinfo->tm_mday;
mois=timeinfo->tm_mon+1;
annee=(timeinfo->tm_year)+1900;
}

Juste avec ca ca marche, enfin sauf qu'il n'y a pas lundi, mardi, janvier, février etc

Commentaire de val3113 le 21/04/2006 15:43:07

Voila finalement ce qu'il faut pour qu'il marche vraiment:
#include<stdio.h>
#include<time.h>

void main()
{
struct tm* timeinfo;
time_t raw;
int jour, mois, annee;

time(&raw);
timeinfo = localtime(&raw);

jour=timeinfo->tm_mday;
mois=timeinfo->tm_mon+1;
annee=(timeinfo->tm_year)+1900;
}

Juste avec ca ca marche, enfin sauf qu'il n'y a pas lundi, mardi, janvier, février etc

Commentaire de cadavor le 14/04/2008 11:23:24

Les heures, minutes et secondes n'affichent le 0 lorsque c'est inférieur à 10.
Comment faire pour l'ajouter?

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales