Changeset 549 for XIOS/trunk/src/calendar.cpp
- Timestamp:
- 01/26/15 14:39:26 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/trunk/src/calendar.cpp
r532 r549 12 12 , timeOrigin(*this) 13 13 , currentDate(*this) 14 { 14 {} 15 15 16 16 CCalendar::CCalendar(const StdString& id) … … 19 19 , timeOrigin(*this) 20 20 , currentDate(*this) 21 { 22 21 {} 22 23 23 CCalendar::CCalendar(const StdString& id, 24 int yr, int mth, int d 25 int hr , int min, int sec)24 int yr, int mth, int d, 25 int hr /*= 0*/, int min /*= 0*/, int sec /*= 0*/) 26 26 : CObject(id) 27 27 , initDate(*this) 28 28 , timeOrigin(*this) 29 29 , currentDate(*this) 30 { 31 initializeDate(yr, mth, d, hr, min, sec) 30 { 31 initializeDate(yr, mth, d, hr, min, sec); 32 32 } 33 33 … … 66 66 67 67 void CCalendar::initializeDate(int yr, int mth, int d, 68 int hr , int min, int sec)68 int hr /*= 0*/, int min /*= 0*/, int sec /*= 0*/) 69 69 { 70 initDate =CDate(*this,yr, mth, d, hr, min, sec);71 timeOrigin =initDate;72 currentDate =initDate;70 initDate = CDate(*this, yr, mth, d, hr, min, sec); 71 timeOrigin = initDate; 72 currentDate = initDate; 73 73 } 74 74 75 75 void CCalendar::initializeDate(const StdString& dateStr) 76 { 77 initDate =CDate::FromString(dateStr, *this);78 timeOrigin =initDate;79 currentDate =initDate;76 { 77 initDate = CDate::FromString(dateStr, *this); 78 timeOrigin = initDate; 79 currentDate = initDate; 80 80 } 81 81 82 82 void CCalendar::initializeDate(const StdString& dateStr, const StdString& timeOriginStr) 83 { 84 initDate =CDate::FromString(dateStr, *this);85 timeOrigin =CDate::FromString(timeOriginStr, *this);86 currentDate =initDate;83 { 84 initDate = CDate::FromString(dateStr, *this); 85 timeOrigin = CDate::FromString(timeOriginStr, *this); 86 currentDate = initDate; 87 87 } 88 89 88 90 89 CCalendar::~CCalendar(void) … … 102 101 } 103 102 104 void CCalendar::fromString(const StdString 103 void CCalendar::fromString(const StdString& str) 105 104 { ERROR("CCalendar::fromString(str)", 106 105 << "[ str = " << str << "] Not implemented yet !"); } … … 108 107 //----------------------------------------------------------------- 109 108 110 void CCalendar::setTimeStep(const CDuration & duration) 111 { this->timestep = duration; } 109 void CCalendar::setTimeStep(const CDuration& timestep) 110 { 111 if (timestep.timestep) 112 ERROR("CCalendar::setTimeStep(const CDuration& timestep)", 113 << "Circular definition of the timestep: the timestep cannot refer to itself."); 114 this->timestep = timestep; 115 } 112 116 113 CDate 114 { 115 info(20) << "update step : " << step <<" timestep "<<this->timestep << std::endl;116 117 CDate& CCalendar::update(int step) 118 { 119 info(20) << "update step : " << step << " timestep " << this->timestep << std::endl; 120 return (this->getCurrentDate() = this->getInitDate() + step * this->timestep); 117 121 } 118 122 119 123 //----------------------------------------------------------------- 120 124 121 const CDuration & CCalendar::getTimeStep(void) const { return (this->timestep); } 122 const CDate & CCalendar::getInitDate(void) const { return (this->initDate); } 123 const CDate & CCalendar::getTimeOrigin(void) const { return (this->timeOrigin); } 124 CDate & CCalendar::getCurrentDate(void) { return (this->currentDate); } 125 void CCalendar::setInitDate(const CDate& initDate) 126 { 127 if (&initDate.getRelCalendar() != this) 128 ERROR("CCalendar::setInitDate(const CDate& initDate)", 129 << "The init date cannot be attached to another calendar."); 130 this->initDate = initDate; 131 } 132 133 void CCalendar::setTimeOrigin(const CDate& timeOrigin) 134 { 135 if (&timeOrigin.getRelCalendar() != this) 136 ERROR("CCalendar::setInitDate(const CDate& timeOrigin)", 137 << "The time origin cannot be attached to another calendar."); 138 this->timeOrigin = timeOrigin; 139 } 125 140 126 141 //----------------------------------------------------------------- 127 142 128 int CCalendar::getMonthLength(const CDate & date) const 143 const CDuration& CCalendar::getTimeStep(void) const { return this->timestep; } 144 const CDate& CCalendar::getInitDate(void) const { return this->initDate; } 145 const CDate& CCalendar::getTimeOrigin(void) const { return this->timeOrigin; } 146 CDate& CCalendar::getCurrentDate(void) { return this->currentDate; } 147 148 //----------------------------------------------------------------- 149 150 int CCalendar::getMonthLength(const CDate& date) const 129 151 { // Retourne la durée du mois en jour. 130 131 {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};132 return (NoLeapMonthLength[date.getMonth()-1]);152 static const int NoLeapMonthLength[] = 153 { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; 154 return NoLeapMonthLength[date.getMonth() - 1]; 133 155 } 134 156 135 StdString CCalendar::getType(void) const { return (StdString(this->getId())); }157 StdString CCalendar::getType(void) const { return StdString(this->getId()); } 136 158 137 int CCalendar::getYearTotalLength(const CDate 159 int CCalendar::getYearTotalLength(const CDate& date) const { return (365 * 86400); } 138 160 139 int CCalendar::getYearLength (void) const { return (12); } 140 int CCalendar::getDayLength (void) const { return (24); } 141 int CCalendar::getHourLength (void) const { return (60); } 142 int CCalendar::getMinuteLength(void) const { return (60); } 161 int CCalendar::getYearLength (void) const { return 12; } 162 int CCalendar::getDayLength (void) const { return 24; } 163 int CCalendar::getHourLength (void) const { return 60; } 164 int CCalendar::getMinuteLength(void) const { return 60; } 165 int CCalendar::getDayLengthInSeconds(void) const { return getDayLength() * getHourLength() * getMinuteLength(); } 143 166 144 int CCalendar::getNbSecond(const CDate & date) const 145 { // Retourne le nombre de secondes écoulées depuis le début de l'année. 146 CDate _d0(date); int nbday = 0; 147 148 for(_d0.setMonth(1); _d0.getMonth() < date.getMonth(); _d0.setMonth(_d0.getMonth()+1)) 149 nbday += getMonthLength(_d0); 150 return ((((nbday + date.getDay()) * getDayLength() + date.getHour()) * getHourLength() 151 + date.getMinute()) * getMinuteLength() + date.getSecond()); 167 StdString CCalendar::getMonthName(int monthId) const 168 { 169 static const StdString MonthNames[] = 170 { "january", "february", "march", "april" , "may", "june", 171 "july", "august", "september", "october", "november", "december" }; 172 return MonthNames[monthId - 1]; 152 173 } 153 174 154 StdString CCalendar::getMonthName(int month_id) const 155 { 156 static const StdString Monthname_str[] = 157 { "january", "february", "march" , "april" , "may" , "june" , 158 "july" , "august" , "september", "october", "november", "december" }; 159 return(Monthname_str[month_id-1]); 160 } 161 162 const StdString CCalendar::getMonthShortName(int month_id) const 163 { StdString value = this->getMonthName(month_id); value.resize(3); return (value); } 175 const StdString CCalendar::getMonthShortName(int monthId) const 176 { StdString value = this->getMonthName(monthId); value.resize(3); return value; } 164 177 165 178 ///----------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.