1 /**************************************************************************
2 ** (c) Copyright 1999, Andromeda Technology & Automation
3 ***************************************************************************
4 ** MODULE INFORMATION *
5 ***********************
7 ** SYSTEM NAME : AXE - Andromeda X-windows Encapsulation
8 ** VERSION NUMBER : $Revision: 1.3 $
15 ***************************************************************************
16 ** ADMINISTRATIVE INFORMATION *
17 ********************************
18 ** ORIGINAL AUTHOR : Arjen Baart - arjen@andromeda.nl
19 ** CREATION DATE : Feb 06, 1998
20 ** LAST UPDATE : Oct 16, 1999
22 **************************************************************************/
24 /*****************************
26 Revision 1.3 2002-09-28 06:58:45 arjen
27 Bugfix: conversion of an empty string to a date or hour object
28 now makes the values of such an object 0 (null) instead of giving
30 The class UTC combines the date and hour classes. The most basic
31 functions of the UTC class are now implemented.
32 These include constructors and conversion to and from String objects.
33 New functions: date::proper(), hour::proper() and UTC::proper().
34 Return true if the object holds a proper clock time and/or calendar
35 date; false if at least one value is out of range.
37 Revision 1.2 2002/09/02 06:18:20 arjen
38 Fixed some date and time conversion functions
40 Revision 1.1 2002/07/25 08:01:26 arjen
41 First checkin, AXE release 0.2
43 *****************************/
45 /* static const char *RCSID = "$Id: date.h,v 1.3 2002-09-28 06:58:45 arjen Exp $"; */
54 unsigned char month, day;
59 date add(unsigned long days);
61 date subtract(unsigned long days);
74 date(unsigned d, unsigned m=0, short y=0)
83 bool proper(); // Check wether this is a proper calendar date
85 friend date operator+(date, date);
86 friend date operator+(unsigned long, date);
87 friend date operator+(date, unsigned long);
89 date operator += (date D)
94 date operator += (unsigned long l)
99 date operator ++ () // prefix
104 date operator ++ (int) // postfix
109 friend date operator-(unsigned long, date);
110 friend date operator-(date, unsigned long);
111 friend long operator-(date&, date&);
113 date operator -= (unsigned long l)
118 date operator -- () // prefix
123 date operator -- (int) // postfix
128 // long(date); // Calculate nr. of days since...
130 int operator==(date d)
134 cm = this->year - d.year;
135 cm = (cm != 0) ? cm : this->month - d.month;
136 cm = (cm != 0) ? cm : this->day - d.day;
141 int operator!=(date d)
145 cm = this->year - d.year;
146 cm = (cm != 0) ? cm : this->month - d.month;
147 cm = (cm != 0) ? cm : this->day - d.day;
152 int operator<=(date d)
156 cm = this->year - d.year;
157 cm = (cm != 0) ? cm : this->month - d.month;
158 cm = (cm != 0) ? cm : this->day - d.day;
163 int operator>=(date d)
167 cm = this->year - d.year;
168 cm = (cm != 0) ? cm : this->month - d.month;
169 cm = (cm != 0) ? cm : this->day - d.day;
174 int operator>(date d)
178 cm = this->year - d.year;
179 cm = (cm != 0) ? cm : this->month - d.month;
180 cm = (cm != 0) ? cm : this->day - d.day;
185 int operator<(date d)
189 cm = this->year - d.year;
190 cm = (cm != 0) ? cm : this->month - d.month;
191 cm = (cm != 0) ? cm : this->day - d.day;
208 String MonthName(void);
217 unsigned DaysInMonth();
219 // date operator*(double)
220 // date& operator*=(double)
221 // date operator/(double)
222 // date& operator/=(double)
224 friend std::ostream& operator<<(std::ostream&, const date&);
225 friend std::istream& operator>>(std::istream&, date&);
227 String format(const char *fmt = "%F");
235 short minutes, seconds;
243 cm = this->hours - h.hours;
244 cm = (cm != 0) ? cm : this->minutes - h.minutes;
245 cm = (cm != 0) ? cm : this->seconds - h.seconds;
259 hour(int hr, short minute, short sec)
268 bool proper(); // Check wether this is a proper clock time
287 bool operator==(hour h)
289 return compare(h) == 0;
292 friend hour operator+(hour &, hour &);
293 hour operator += (hour h);
294 friend hour operator-(hour &, hour &);
296 friend std::ostream& operator<<(std::ostream &, const hour &);
297 friend std::istream& operator>>(std::istream &, hour &);
299 String format(const char *fmt = "%T");
313 /* Leave everything to the default hour and date constructors */
317 UTC(date dt, hour tm)
335 return d.proper() && t.proper();
338 friend std::ostream& operator<<(std::ostream &, const UTC &);
339 friend std::istream& operator>>(std::istream &, UTC &);
341 String format(const char *fmt = "%F %T");
346 #endif /* AXE_DATE_H */