/******************************************
*
* Cedric Pradalier 2001
* mail : http://cedric.pradalier.free.fr/mail.html
*
*****************************************/
#ifndef DATE_H
#define DATE_H
#include "objet.h"
#include <stdio.h>
// Year est-elle bissextile
int IsLeapYear(int year);
// definition des jours
typedef enum {Lundi=0,Mardi,Mercredi,Jeudi,Vendredi,Samedi,Dimanche,NonJour} Jours;
// donne la chaine correspondant a un jour
char * GetDayString(Jours j);
// identifie le jour correspondant a une chaine
Jours GetDayofS(char * S);
/***********************************************
Classe implementant une date comprise entre 0
et environ 31/12/2000000000
operations de comparaison.
fonctions permettant de connaitre le jour de la semaine
correspondant a toute date
*************************************************/
class CDate : public CObjet
{
public:
char Day,Month;
int Year;
CDate() {};
// constructeur de copie
CDate(const CDate & other);
CDate(char D,char M,int Y);
// Extraction d'une date contenue dans un nombre en decimal :
// sous la forme YYYYMMDD
CDate(long l);
// Operateurs de comparaisons
bool operator<(CDate D2) const;
bool operator==(CDate D2) const;
bool IsBetween(CDate D1,CDate D2) const;
virtual ~CDate() {};
// Primitive d'I/O
virtual void Print();
/* lit la date dans fp et renvoie true
si la date est valide. Hypothese :
la prochaine sequence de fp est bien une date
au format DD/MM/YYYY
*/
bool Read(FILE * fp);
// renvoie le numero du jour dans l'annee
int GetDayinYear() const;
// renvoie le Jour de la semaine correspondant
// a la date.
Jours GetDayinWeek() const;
};
#endif // DATE_H