Classe date c++ avec format et valeur nulle

Soyez le premier à donner votre avis sur cette source.

Vue 19 354 fois - Téléchargée 792 fois

Description

Ce conteneur permet de gérer les dates et les heures.
La valeur nulle est gérée.
La date/heure peut-être saisie ou affichée avec un format personnalisable.

Un exemple :
On défini une date : BP_Date madate;
On affecte un format : madate.setformat ("dd/mm/yyyy hh:nn:ss");
On entre la date : madate.set ("01/02/2004 23:59:59");
ou : madate.setdatetime (2004, 2, 1, 23, 59, 59);
On rechage le format : madate.setformat ("To!day i!s : m/d/yy");
On utilise la date : monstring = madate.str(); (monstring = "Today is : 2/1/04");

Source / Exemple :


Un aperçu du .H :

// include BipDATE only one time
#ifndef _BipDATE_
#define _BipDATE_

class BP_Date
{
	private:
		time_t tBP_Date;			// store the date
		std::string sBP_Format;		// store the format of the date
		bool bBP_Null;				// true if date is null
		int iBPError;				// store error code

	public:
		BP_Date (); // constructor
		setdatetime (const int BPyear, const int BPmonth, const int BPday,
			  const int BPhour, const int BPmin, const int BPsec);
		set (const std::string BPdate);
		std::string str (void);
		int BP_Date::geterror (void);
		setformat (const std::string BPformat);
		std::string getformat (void);
		BP_Date::settimet (time_t BPtimet);
		time_t BP_Date::gettimet (void);
		int BP_Date::day (void);
		int BP_Date::month (void);
		int BP_Date::year (void);
		int BP_Date::hour (void);
		int BP_Date::minute (void);
		int BP_Date::second (void);
		bool BP_Date::isnull (void);
		BP_Date::setnull (void);
		reset (void);
};

#endif /* _BipDATE_ */

Conclusion :


Documentation, exemples et mises à jour sur http://bipcpp.free.fr/
Les commentaires et suggestions sont les bienvenus.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

bipcpp
Messages postés
40
Date d'inscription
mardi 18 mai 2004
Statut
Membre
Dernière intervention
2 mai 2010
-
Merci d'avoir passer quelques minutes sur mon code.

>> dans une classe, les membres sont privés par défaut.
Tu as raison, mais je trouve que c'est plus lisible de le préciser.

>>peut-etre également rajouter un membre statique :
static BP_Date today()
C'est une excellente idée. Tellement bonne que j'y ai pensé et que c'est déjà fait. (je l'ai seulement appelé setnow)

>>rajouter également des opérateurs pour les operations entre date, pour ajouter un jour/un mois/une année ?
Ca c'est prévu pour la prochaine version, avec comparaison de dates (<,<=,>,>=,...)

>>int BP_Date::day (void); => ca c'est une déclaration C-Style, en c++ on ne met plutôt int BP_Date::day ();
J'ai un penchant pour le void qui indique clairement qu'il n'y a pas de paramètres, mais je vais y réfléchir.

A+
BlackGoddess
Messages postés
338
Date d'inscription
jeudi 22 août 2002
Statut
Membre
Dernière intervention
14 juin 2005
-
int BP_Date::day (void); => ca c'est une déclaration C-Style, en c++ on ne met plutôt int BP_Date::day ();
BlackGoddess
Messages postés
338
Date d'inscription
jeudi 22 août 2002
Statut
Membre
Dernière intervention
14 juin 2005
-
rajouter également des opérateurs pour les operations entre date, pour ajouter un jour/un mois/une année ?

si tu veux aussi comparer avec une lib existente, tu peux regarder boost::datetime (www.boost.org)
BlackGoddess
Messages postés
338
Date d'inscription
jeudi 22 août 2002
Statut
Membre
Dernière intervention
14 juin 2005
-
peut-etre également rajouter un membre statique :
static BP_Date today()
{
DP_Date d;
d.settimet(time(NULL));
return d;
}
BlackGoddess
Messages postés
338
Date d'inscription
jeudi 22 août 2002
Statut
Membre
Dernière intervention
14 juin 2005
-
juste au niveau des définitions :

class BP_Date
{
private:

dans une classe, les membres sont privés par défaut.

peut-être faire des constructeurs pour
setdatetime (const int BPyear, const int BPmonth, const int BPday,
const int BPhour, const int BPmin, const int BPsec);
set (const std::string BPdate);

ne pas oublier la constance des membres qui ne modifient pas les données
ne pas oublier non plus le destructeur virtuel

BP_Date::settimet (time_t BPtimet); BP_Date::setnull (void); reset (void);
=> et le type de retour ?

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.