source: Sophya/trunk/SophyaLib/NTools/dates.h@ 753

Last change on this file since 753 was 490, checked in by ansari, 26 years ago

Merge avec PEIDA++ (~V 3.8) et nettoyage pour nouveau PPersist Reza+cmv 21/10/99

File size: 4.3 KB
Line 
1#ifndef DATES_SEEN
2#define DATES_SEEN
3
4#include <string.h>
5#include <string>
6#include <iostream.h>
7#include "pexceptions.h"
8
9class TimeZone;
10// <summary> Dates, conversions, operations </summary>
11// Classe generale de date et heure, operation, TU/TL ...
12class Date EXC_AWARE {
13public:
14 // Enumerations jours et mois
15 // <group>
16 enum Jour {jour_Lundi=0, jour_Mardi, jour_Mercredi, jour_Jeudi, jour_Vendredi, jour_Samedi, jour_Dimanche};
17 enum Mois {mois_Janvier=1, mois_Fevrier, mois_Mars, mois_Avril, mois_Mai, mois_Juin, mois_Juillet,
18 mois_Aout, mois_Septembre, mois_Octobre, mois_Novembre, mois_Decembre};
19 enum {kGMTTime=0, kLocalTime=1};
20 // </group>
21
22 // Constructeur : maintenant
23 Date();
24 // Constructeur : jours ecoules depuis 0/1/1901 0h TU
25 Date(double);
26 // Constructeur : "jj/mm/aa" ou "amjj", "hh:mm:ss"
27 // topt : kGMTTime (par defaut) ou kLocalTime
28 // <group>
29 Date(const char*, const char* = 0, int topt=0);
30 Date(string const&, string const& = "", int topt=0);
31 // </group>
32 // Constructeur : Jour Mois An, Heure Minutes Secondes
33 Date(int J, int M, int A, int h, int m, double s);
34
35 /*operator double() const;*/
36 // Jours depuis le 0 janvier 1901 0h TU
37 double GetDays() const;
38 // Jours depuis le 0 janvier 1901 0h TU
39 void Set(double);
40 // "jj/mm/aa" ou "amjj", "hh:mm:ss"
41 // <group>
42 void Set(const char*, const char* = 0, int topt=0);
43 void Set(string const&, string const& = "", int topt=0);
44 // </group>
45
46 // Change de zone horaire.
47 void SetTimeZone(TimeZone* tz);
48
49 // Verifie si des parties de la date sont indeterminees
50 // <group>
51 // Date partiellement indeterminee
52 bool UndetDate() const;
53 // Date totalement indeterminee
54 bool AllUndetDate() const;
55 // Heure partiellement indeterminee
56 bool UndetTime() const;
57 // Heure totalement indeterminee
58 bool AllUndetTime() const;
59 // </group>
60
61 // Conversion vers des chaines de caractere,
62 // date en clair ou code Eros, heure, et temps sideral
63 // en heure local ou GMT.
64 // <group>
65 void GetDateStr(char*, int tOpt=0) const;
66 void GetDateCode(char*, int tOpt=0) const;
67 void GetTimeStr(char*, int tOpt=0) const;
68 void GetSidTStr(char*) const;
69
70 string DateStr(int tOpt=0) const;
71 string DateCode(int tOpt=0) const;
72 string TimeStr(int tOpt=0) const;
73 string SidTStr() const;
74 // </group>
75
76 // Jour de la semaine, jour_Lundi == 0
77 int DayOfWeek(int tOpt=0) const;
78
79 // Ajoute ou soustrait un intervalle en jour et fraction de jour
80 // <group>
81 Date& operator += (double);
82 Date& operator -= (double);
83
84 friend Date operator + (Date const&, double);
85 friend Date operator - (Date const&, double);
86 // </group>
87
88 // Nombre de jour (et fraction) entre deux dates
89 friend double operator - (Date const&, Date const&);
90
91 // Comparaisons entre dates
92 // <group>
93 friend bool operator == (Date const&, Date const&);
94 friend bool operator < (Date const&, Date const&);
95 friend bool operator <= (Date const&, Date const&);
96 friend bool operator > (Date const&, Date const&);
97 friend bool operator >= (Date const&, Date const&);
98 friend bool operator != (Date const&, Date const&);
99 // </group>
100
101 // Impression
102 friend ostream& operator << (ostream&, Date const&);
103
104 // Nombre de jours dans le mois
105 static short MonthDays(short mois, short annee);
106
107 // Nombre de jours dans l'annee
108 static short YearDays(short annee);
109
110 // Ieme jourssem dans le mois
111 // (2, jour_Dimanche, 5, 1996) : deuxieme dimanche de mai 96
112 static short NthMonthDay(short i, short joursem, short mois, short annee);
113
114 short JJ,MM,AA,hh,mm;
115 double ss;
116 TimeZone* timeZone;
117 int nuit; // est-ce une date midi-midi ?
118
119/* void GetSysTimeZone(); */
120};
121
122// <summary> Gestion des fuseaux horaires </summary>
123// Classe de gestion des fuseaux horaires. Tient compte des heures d'ete.
124class TimeZone EXC_AWARE {
125public:
126 char code[4];
127 char name[20];
128
129 short gmtOffset;
130
131 short hasDST;
132 short dstByWeekDay;
133 short dstStartDay, dstStartNum, dstStartMonth; // -1 : le dernier, dstStartDay : apres cette date
134 short dstStopDay, dstStopNum, dstStopMonth;
135 short dstOffset;
136
137 TimeZone(); // Tente de deviner le timezone systeme
138 TimeZone(const char*); // Par nom
139 void SetZone(const char*);
140 int IsDst(Date const& date);
141 int GetOffset(Date const& date);
142};
143
144extern TimeZone* gTimeZone;
145
146#endif
Note: See TracBrowser for help on using the repository browser.