source: XMLIO_V2/dev/dev_rv/src/XMLIO/calendar.hpp @ 119

Last change on this file since 119 was 119, checked in by hozdoba, 14 years ago

Quelques modifications supplémentaires apportées aux dates et calendriers.

File size: 3.6 KB
Line 
1#ifndef __XMLIO_CALENDAR__
2#define __XMLIO_CALENDAR__
3
4namespace XMLIOSERVER
5{
6   class JulianCalendar : public AbstractCalendar
7   {
8      public :
9         JulianCalendar() : AbstractCalendar("Julian")
10         {/* Ne rien faire de plus */}
11         JulianCalendar(const string& dateStr) : AbstractCalendar("Julian", dateStr)
12         {/* Ne rien faire de plus */}
13
14         virtual int getYearTotalLength(const Date& d) const
15         { // Retourne la durée d'une année en seconde.
16            if (d.getYear()%4 == 0) return (366 * 86400);
17            return (365 * 86400);
18         }
19
20         virtual int getMonthLength(const Date& d) const
21         { // Retourne la durée du mois en jour.
22            if (d.getMonth() == 2)
23            { if (d.getYear()%4 == 0) return 29; return 28; }
24            return AbstractCalendar::getMonthLength(d);
25         }
26
27         virtual ~JulianCalendar()
28         {/* Ne rien faire de plus */}
29
30   }; // class JulianCalendar
31
32   class GregorianCalendar : public AbstractCalendar
33   {
34      public :
35         GregorianCalendar() : AbstractCalendar("Gregorian")
36         {/* Ne rien faire de plus */}
37         GregorianCalendar(const string& dateStr) : AbstractCalendar("Gregorian", dateStr)
38         {/* Ne rien faire de plus */}
39
40         virtual int getYearTotalLength(const Date& d) const
41         { // Retourne la durée d'une année en seconde.
42            if ((d.getYear() % 4 == 0) && (d.getYear() % 100 != 0 || d.getYear() % 400 == 0)) return (366 * 86400);
43            return (365 * 86400);
44         }
45
46         virtual int getMonthLength(const Date& d) const
47         { // Retourne la durée du mois en jour.
48            if (d.getMonth() == 2)
49            { // Traitement du cas particulier en Février.
50               if ((d.getYear() % 4 == 0) && (d.getYear() % 100 != 0 || d.getYear() % 400 == 0))
51                  return 29;
52               return 28;
53            }
54            return AbstractCalendar::getMonthLength(d);
55         }
56
57         virtual ~GregorianCalendar()
58         {/* Ne rien faire de plus */}
59
60   }; // class GregorianCalendar
61
62   class NoLeapCalendar : public AbstractCalendar
63   {
64      public :
65         NoLeapCalendar() : AbstractCalendar("NoLeap")
66         {/* Ne rien faire de plus */}
67         NoLeapCalendar(const string& dateStr) : AbstractCalendar("NoLeap", dateStr)
68         {/* Ne rien faire de plus */}
69
70         virtual ~NoLeapCalendar()
71         {/* Ne rien faire de plus */}
72
73   }; // class NoLeapCalendar
74
75   class AllLeapCalendar : public AbstractCalendar
76   {
77      public :
78         AllLeapCalendar() : AbstractCalendar("AllLeap")
79         {/* Ne rien faire de plus */}
80         AllLeapCalendar(const string& dateStr) : AbstractCalendar("AllLeap", dateStr)
81         {/* Ne rien faire de plus */}
82
83         virtual int getMonthLength(const Date& d) const
84         { if (d.getMonth() == 2) return (29); return AbstractCalendar::getMonthLength(d); }
85
86         virtual int getYearTotalLength(const Date& d) const { return (366 * 86400); }
87
88         virtual ~AllLeapCalendar()
89         {/* Ne rien faire de plus */}
90
91   }; // class NoLeapCalendar
92
93   class D360Calendar : public AbstractCalendar
94   {
95      public :
96         D360Calendar() : AbstractCalendar("D360")
97         {/* Ne rien faire de plus */}
98         D360Calendar(const string& dateStr) : AbstractCalendar("D360", dateStr)
99         {/* Ne rien faire de plus */}
100
101         virtual int getYearTotalLength(const Date& d) const { return (360 * 86400); }
102         virtual int getMonthLength(const Date& d) const { return (30); }
103
104         virtual ~D360Calendar()
105         {/* Ne rien faire de plus */}
106
107   }; // class D360Calendar
108
109} // namespace XMLIOSERVER
110
111#endif // __XMLIO_CALENDAR__
Note: See TracBrowser for help on using the repository browser.