Changeset 116


Ignore:
Timestamp:
07/16/10 16:27:14 (14 years ago)
Author:
hozdoba
Message:
 
Location:
XMLIO_V2/dev/dev_rv/src/XMLIO
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • XMLIO_V2/dev/dev_rv/src/XMLIO/c_interface.cpp

    r115 r116  
    2424      Context::ResolveInheritance();*/ 
    2525 
    26       AbstractCalendar* calendar = new AllLeapCalendar(); 
     26      AbstractCalendar* calendar = new GregorianCalendar(); 
     27      Date dd (*calendar, 2000, 05, 03, 00, 00, 00) ; 
     28      Date ddd(*calendar, 2030, 11, 02, 10, 33, 40) ; 
    2729 
    2830      Duration sc0 = Second * -65.3 + Minute * 117.5   + Hour * 65.9  + Day * 417.8 + Month * 16.5  - Year * 17.5; 
     
    3739      std::cout << sc1 << std::endl; 
    3840      std::cout << sc1 - sc0 << std::endl; 
     41      std::cout << ddd - dd << std::endl; 
     42      std::cout << dd << std::endl; 
     43      std::cout << (Time)dd << std::endl; 
     44      std::cout << calendar->getNbSecond(dd) << std::endl; 
    3945 
    4046      // On écrit l'arborescence résultante du traitement sur la sortie. 
  • 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 
  • XMLIO_V2/dev/dev_rv/src/XMLIO/date.hpp

    r115 r116  
    120120 
    121121         void setMonth (int newmonth) { month = newmonth; } 
     122         void setYear  (int newyear)  { year  = newyear; } 
    122123 
    123124         const AbstractCalendar& getRelCalendar(void) const { return (relCalendar); } 
     
    130131      private : 
    131132 
    132          const AbstractCalendar& relCalendar; // Calendrier lié à la date. 
     133         const AbstractCalendar& relCalendar; // Calendrier lié à la Date. 
    133134         int year, month, day, hour, minute, second; // Année, mois, ... 
    134135 
Note: See TracChangeset for help on using the changeset viewer.