Ignore:
Timestamp:
07/16/10 16:27:14 (14 years ago)
Author:
hozdoba
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/src/XMLIO/calendar.hpp

    r115 r116  
    2121         } 
    2222 
     23         virtual int getYearTotalLength(const Date& d) const { return (365 * 86400); } // Retourne la longueur d'une année en seconde. 
     24 
    2325         virtual int getYearLength(void)   const { return (12); } // Retourne la longueur d'une année en mois. 
    2426         virtual int getDayLength(void)    const { return (24); } // Retourne la longueur d'un jour en heures. 
     
    3234            for(_d0.setMonth(1); _d0.getMonth() < d.getMonth(); _d0.setMonth(_d0.getMonth()+1)) 
    3335               nbday += getMonthLength(_d0); 
    34  
     36            //std::cout << "nombre de jours : " << nbday << std::endl; 
    3537            return ((((nbday + d.getDay()) * getDayLength() + d.getHour()) 
    3638                     * getHourLength() + d.getMinute()) * getMinuteLength() + d.getSecond()); 
     
    7476         {/* Ne rien faire de plus */} 
    7577 
     78         virtual int getYearTotalLength(const Date& d) const 
     79         { // Retourne la longueur d'une année en seconde. 
     80            if (d.getYear()%4 == 0) return (366 * 86400); 
     81            return (365 * 86400); 
     82         } 
     83 
    7684         virtual int getMonthLength(const Date& d) const 
    7785         { // Retourne la longueur du mois en jour. 
     
    9199         GregorianCalendar() : AbstractCalendar("Gregorian") 
    92100         {/* Ne rien faire de plus */} 
     101 
     102         virtual int getYearTotalLength(const Date& d) const 
     103         { // Retourne la longueur d'une année en seconde. 
     104            if ((d.getYear() % 4 == 0) && (d.getYear() % 100 != 0 || d.getYear() % 400 == 0)) return (366 * 86400); 
     105            return (365 * 86400); 
     106         } 
    93107 
    94108         virtual int getMonthLength(const Date& d) const 
     
    127141         { if (d.getMonth() == 2) return (29); return AbstractCalendar::getMonthLength(d); } 
    128142 
     143         virtual int getYearTotalLength(const Date& d) const { return (366 * 86400); } // Retourne la longueur d'une année en seconde. 
     144 
    129145         virtual ~AllLeapCalendar() 
    130146         {/* Ne rien faire de plus */} 
     
    132148   }; // class NoLeapCalendar 
    133149 
    134    class D30Calendar : public AbstractCalendar 
     150   class D360Calendar : public AbstractCalendar 
    135151   { 
    136152      public : 
    137          D30Calendar() : AbstractCalendar("D30") 
     153         D360Calendar() : AbstractCalendar("D360") 
    138154         {/* Ne rien faire de plus */} 
    139155 
     156         virtual int getYearTotalLength(const Date& d) const { return (360 * 86400); } // Retourne la longueur d'une année en seconde. 
    140157         virtual int getMonthLength(const Date& d) const { return (30); } 
    141158 
    142          virtual ~D30Calendar() 
     159         virtual ~D360Calendar() 
    143160         {/* Ne rien faire de plus */} 
    144161 
    145    }; // class D30Calendar 
     162   }; // class D360Calendar 
    146163 
    147164 
    148165   //////////////////////////////////////// 
    149    Date::operator Time(void) 
     166   Date::operator Time(void) // Non vérifiée (algorithme naïf) 
    150167   { 
    151       Duration diff = *this - relCalendar.getInitDate(); 
    152       return (0); 
     168      // Todo : Tester si la date courante est supérieure à la date initiale. 
     169      Time retvalue = - relCalendar.getNbSecond(relCalendar.getInitDate()) + relCalendar.getNbSecond(*this); 
     170      for(Date _d(relCalendar.getInitDate()); _d.getYear() < getYear(); _d.setYear(_d.getYear()+1)) 
     171         retvalue += relCalendar.getYearTotalLength(_d); 
     172      return (retvalue); 
    153173   } 
    154174 
Note: See TracChangeset for help on using the changeset viewer.