Changeset 118 for XMLIO_V2/dev/dev_rv/src/XMLIO/date.hpp
- Timestamp:
- 07/20/10 10:09:45 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XMLIO_V2/dev/dev_rv/src/XMLIO/date.hpp
r117 r118 4 4 namespace XMLIOSERVER 5 5 { 6 class AbstractCalendar;7 8 typedef long long int Time;9 10 typedef struct _duration11 {12 /// Méthodes associées à la structure Duration.13 friend std::ostream& operator<<(std::ostream& out, const struct _duration& d)14 {15 out << d.year << "y. " << d.month << "mo. " << d.day << "d. "16 << d.hour << "h. " << d.minute << "min. " << d.second << "sec. ";17 return (out);18 }19 20 struct _duration& resolve(const AbstractCalendar&);21 22 /// Propriétés associées à la structure.23 double year, month, day, hour, minute, second;24 25 } Duration;26 27 /// Opérateurs associés à la structure Duration.28 Duration operator*(const Duration& ddr, const double& scal)29 {30 Duration dur(ddr);31 dur.year *= scal; dur.month *= scal; dur.day *= scal;32 dur.hour *= scal; dur.minute *= scal; dur.second *= scal;33 return (dur);34 }35 36 Duration operator*(const double& scal, const Duration& ddr)37 { return (ddr * scal); }38 39 Duration operator-(const Duration& ddr, const Duration& dr)40 {41 Duration dur(ddr);42 dur.year -= dr.year; dur.month -= dr.month ; dur.day -= dr.day;43 dur.hour -= dr.hour; dur.minute -= dr.minute; dur.second -= dr.second;44 return (dur);45 }46 47 Duration operator-(const Duration& ddr)48 {49 Duration dur(ddr);50 dur.year = -dur.year; dur.month = -dur.month ; dur.day = -dur.day;51 dur.hour = -dur.hour; dur.minute = -dur.minute; dur.second = -dur.second;52 return (dur);53 }54 55 Duration operator+(const Duration& ddr, const Duration& dr)56 {57 Duration dur(ddr);58 dur.year += dr.year; dur.month += dr.month ; dur.day += dr.day;59 dur.hour += dr.hour; dur.minute += dr.minute; dur.second += dr.second;60 return (dur);61 }62 63 // Les principales durées constantes : année, mois, jour, ...64 static const Duration Year = {1.0, 0.0, 0.0, 0.0, 0.0, 0.0},65 Month = {0.0, 1.0, 0.0, 0.0, 0.0, 0.0},66 Day = {0.0, 0.0, 1.0, 0.0, 0.0, 0.0},67 Hour = {0.0, 0.0, 0.0, 1.0, 0.0, 0.0},68 Minute = {0.0, 0.0, 0.0, 0.0, 1.0, 0.0},69 Second = {0.0, 0.0, 0.0, 0.0, 0.0, 1.0};70 71 ///////////////////////////////////////////////////72 73 6 class Date 74 7 { … … 87 20 friend std::ostream& operator<<(std::ostream& out, const Date& d) 88 21 { 89 out << d. month << "/" << d.day << "/" << d.year << " -"90 << d.hour << "h. " << d.minute << "min. " << d.second << "sec. ";22 out << d.day << "/" << d.month << "/" << d.year << "-" 23 << d.hour << ":" << d.minute << ":" << d.second; 91 24 return (out); 92 25 } … … 94 27 friend std::istream& operator>>(std::istream& in, Date& d) // Non testée. 95 28 { 96 char c = '/'; // Le caractÚre c est utilisé pour "recueillir" le séparateur "/". 97 in >> d.month >> c >> d.day >> c >> d.year; 98 in.seekg(3, std::ios_base::cur); // On passe la lecture de la chaîne " - " 99 in >> d.hour; in.seekg(3, std::ios_base::cur); // On passe la lecture de la chaîne "h. " 100 in >> d.minute; in.seekg(5, std::ios_base::cur); // On passe la lecture de la chaîne "min. " 101 in >> d.second; in.seekg(5, std::ios_base::cur); // On passe la lecture de la chaîne "sec. " 29 char c = '/'; // Le caractÚre c est utilisé pour "recueillir" les séparateurs "/" et ":". 30 in >> d.day >> c >> d.month >> c >> d.year >> c; 31 in >> d.hour >> c >> d.minute >> c >> d.second; 102 32 return (in); 103 33 } 34 35 static Date FromString(const string& str, const AbstractCalendar& cal); 104 36 105 37 /// Divers accesseurs. … … 133 65 }; // class Date 134 66 135 Duration operator-(const Date& dt0, const Date& dt1)136 {137 // TODO :: Vérifier que les deux dates (dt0 et dt1) ont une référence vers le même calendrier.138 Duration dur =139 { dt0.getYear() - dt1.getYear(), dt0.getMonth() - dt1.getMonth() , dt0.getDay() - dt1.getDay(),140 dt0.getHour() - dt1.getHour(), dt0.getMinute() - dt1.getMinute(), dt0.getSecond() - dt1.getSecond() };141 return (dur.resolve(dt0.getRelCalendar()));142 }143 144 /// Les opérateurs de comparaison. (Non testés pour le moment)145 bool operator==(const Date& dt0, const Date& dt1)146 {147 // TODO :: Vérifier que les deux dates (dt0 et dt1) ont une référence vers le même calendrier.148 return ((dt0.getYear() == dt1.getYear()) && (dt0.getMonth() == dt1.getMonth()) && (dt1.getDay() == dt0.getDay()) &&149 (dt0.getHour() == dt1.getHour()) && (dt0.getMinute() == dt1.getMinute()) && (dt1.getSecond() == dt0.getSecond()));150 }151 152 bool operator<(const Date& dt0, const Date& dt1)153 {154 // TODO :: Vérifier que les deux dates (dt0 et dt1) ont une référence vers le même calendrier.155 if (dt0.getYear() < dt1.getYear()) return true; if (dt0.getMonth() < dt1.getMonth()) return true;156 if (dt0.getDay() < dt1.getDay()) return true; if (dt0.getHour() < dt1.getHour()) return true;157 if (dt0.getMinute() < dt1.getMinute()) return true; if (dt0.getSecond() < dt1.getSecond()) return true;158 return false;159 }160 161 bool operator!=(const Date& dt0, const Date& dt1) { return !(dt1 == dt0); }162 bool operator> (const Date& dt0, const Date& dt1) { return (dt1 < dt0); }163 bool operator>=(const Date& dt0, const Date& dt1) { return ((dt1 > dt0) || (dt1 == dt0)); }164 bool operator<=(const Date& dt0, const Date& dt1) { return ((dt1 < dt0) || (dt1 == dt0)); }165 166 67 } // namespace XMLIOSERVER 167 68
Note: See TracChangeset
for help on using the changeset viewer.