Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members

FXDate.h
1 /********************************************************************************
2 * *
3 * D a t e C l a s s *
4 * *
5 *********************************************************************************
6 * Copyright (C) 2005,2017 by Jeroen van der Zijp. All Rights Reserved. *
7 *********************************************************************************
8 * This library is free software; you can redistribute it and/or modify *
9 * it under the terms of the GNU Lesser General Public License as published by *
10 * the Free Software Foundation; either version 3 of the License, or *
11 * (at your option) any later version. *
12 * *
13 * This library is distributed in the hope that it will be useful, *
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16 * GNU Lesser General Public License for more details. *
17 * *
18 * You should have received a copy of the GNU Lesser General Public License *
19 * along with this program. If not, see <http://www.gnu.org/licenses/> *
20 ********************************************************************************/
21 #ifndef FXDATE_H
22 #define FXDATE_H
23 
24 
25 namespace FX {
26 
27 
31 class FXAPI FXDate {
32 private:
33  FXuint julian;
34 private:
35  static const FXchar shortMonthName[12][4];
36  static const FXchar longMonthName[12][10];
37  static const FXchar shortWeekDay[7][4];
38  static const FXchar longWeekDay[7][10];
39 public:
40 
42  enum {
43  Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
44  };
45 
47  enum {
48  Sun=0,Mon,Tue,Wed,Thu,Fri,Sat
49  };
50 
51 public:
52 
54  FXDate(){}
55 
57  FXDate(const FXDate& date):julian(date.julian){}
58 
60  FXDate(FXuint jd):julian(jd){}
61 
63  FXDate(FXint yr,FXint dy);
64 
66  FXDate(FXint yr,FXint mo,FXint dy);
67 
69  void setJulian(FXuint jd){ julian=jd; }
70 
72  FXuint getJulian() const { return julian; }
73 
75  void setDate(FXint yr,FXint dy);
76 
78  void getDate(FXint& yr,FXint& dy) const;
79 
81  void setDate(FXint yr,FXint mo,FXint dy);
82 
84  void getDate(FXint& yr,FXint& mo,FXint& dy) const;
85 
87  void setTime(FXTime ns);
88 
90  FXTime getTime() const;
91 
93  FXint day() const;
94 
96  FXint month() const;
97 
99  FXint year() const;
100 
102  FXint dayOfWeek() const;
103 
105  FXint dayOfYear() const;
106 
108  FXint weekOfYear() const;
109 
111  FXbool leapYear() const;
112 
114  FXint daysInYear() const;
115 
117  FXint daysInMonth() const;
118 
120  FXDate& addDays(FXint d);
121 
123  FXDate& addMonths(FXint m);
124 
126  FXDate& addYears(FXint y);
127 
129  static FXbool leapYear(FXint yr);
130 
132  static FXint daysInYear(FXint yr);
133 
135  static FXint daysInMonth(FXint yr,FXint mo);
136 
138  static const FXchar *monthName(FXint mo){ return longMonthName[mo-1]; }
139 
141  static const FXchar *monthNameShort(FXint mo){ return shortMonthName[mo-1]; }
142 
144  static const FXchar *dayName(FXint dy){ return longWeekDay[dy]; }
145 
147  static const FXchar *dayNameShort(FXint dy){ return shortWeekDay[dy]; }
148 
150  static FXDate localDate();
151 
153  static FXDate universalDate();
154 
156  FXDate& operator=(const FXDate& date){julian=date.julian;return *this;}
157 
159  FXDate& operator+=(FXint x){ julian+=x; return *this; }
160  FXDate& operator-=(FXint x){ julian-=x; return *this; }
161 
163  FXDate& operator++(){ ++julian; return *this; }
164  FXDate& operator--(){ --julian; return *this; }
165 
167  FXDate operator++(int){ FXDate t(julian++); return t; }
168  FXDate operator--(int){ FXDate t(julian--); return t; }
169 
171  FXbool operator==(const FXDate& date) const { return julian==date.julian;}
172  FXbool operator!=(const FXDate& date) const { return julian!=date.julian;}
173 
175  FXbool operator<(const FXDate& date) const { return julian<date.julian;}
176  FXbool operator<=(const FXDate& date) const { return julian<=date.julian;}
177  FXbool operator>(const FXDate& date) const { return julian>date.julian;}
178  FXbool operator>=(const FXDate& date) const { return julian>=date.julian;}
179 
181  friend inline FXDate operator+(const FXDate& d,FXint x);
182  friend inline FXDate operator+(FXint x,const FXDate& d);
183 
185  friend inline FXint operator-(const FXDate& a,const FXDate& b);
186 
188  friend FXAPI FXStream& operator<<(FXStream& store,const FXDate& d);
189 
191  friend FXAPI FXStream& operator>>(FXStream& store,FXDate& d);
192 
195  };
196 
197 
198 inline FXDate operator+(const FXDate& d,FXint x){ return FXDate(d.julian+x); }
199 inline FXDate operator+(FXint x,const FXDate& d){ return FXDate(x+d.julian); }
200 inline FXint operator-(const FXDate& a,const FXDate& b){return a.julian-b.julian; }
201 
202 extern FXAPI FXStream& operator<<(FXStream& store,const FXDate& d);
203 extern FXAPI FXStream& operator>>(FXStream& store,FXDate& d);
204 
205 }
206 
207 #endif

Copyright © 1997-2016 Jeroen van der Zijp