kopia lustrzana https://github.com/jamescoxon/dl-fldigi
129 wiersze
3.1 KiB
C++
129 wiersze
3.1 KiB
C++
/* -*-C++-*-
|
|
|
|
"$Id: Fl_Date.H,v 1.4 2000/03/30 04:43:56 davefreese Exp $"
|
|
|
|
Copyright 1999-2000 by the Dave Freese & the Flek development team.
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Library General Public License for more details.
|
|
*/
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#ifndef DATE_H
|
|
#define DATE_H
|
|
|
|
#include <iosfwd>
|
|
|
|
typedef enum {
|
|
SUNDAY,
|
|
MONDAY,
|
|
TUESDAY,
|
|
WEDNESDAY,
|
|
THURSDAY,
|
|
FRIDAY,
|
|
SATURDAY
|
|
} weekday_t;
|
|
|
|
typedef enum {
|
|
JANUARY = 1,
|
|
FEBRUARY,
|
|
MARCH,
|
|
APRIL,
|
|
MAY,
|
|
JUNE,
|
|
JULY,
|
|
AUGUST,
|
|
SEPTEMBER,
|
|
OCTOBER,
|
|
NOVEMBER,
|
|
DECEMBER
|
|
} month_t;
|
|
|
|
class Date {
|
|
friend std::ostream &operator<<(std::ostream &, Date &);
|
|
|
|
protected:
|
|
int year;
|
|
int month;
|
|
int day;
|
|
int fmt;
|
|
static const int mdays[];
|
|
static const int jdays[][13];
|
|
static const char *month_name[];
|
|
void helpIncrement();
|
|
|
|
public:
|
|
Date();
|
|
Date( int m, int d, int y );
|
|
|
|
void setDate( int, int, int ); // set the date
|
|
void setDate( Date & );
|
|
void setFormat (int);
|
|
void today(); // set date to the present day
|
|
void Year( int );
|
|
int Year();
|
|
void Month( int );
|
|
int Month();
|
|
void Day( int );
|
|
int Day();
|
|
|
|
void previous_month ();
|
|
void next_month ();
|
|
void previous_year ();
|
|
void next_year ();
|
|
|
|
bool endOfMonth( int );
|
|
|
|
bool leapYear (int);
|
|
bool leapYear () { return leapYear (year); }
|
|
bool isleapyear (int year) { return leapYear (year); }
|
|
bool isleapyear () { return isleapyear (year); }
|
|
|
|
int daysinmonth (int, int);
|
|
int daysinmonth ()
|
|
{ return daysinmonth (month, isleapyear (year)); }
|
|
|
|
bool isvalid (int, int, int);
|
|
bool datevalid (int year, int mon, int day)
|
|
{ return isvalid (mon, day, year); }
|
|
bool datevalid ()
|
|
{ return isvalid (month, day, year); }
|
|
|
|
int dayofyear (int, int, int);
|
|
int dayofyear ()
|
|
{ return dayofyear (year, month, day); }
|
|
|
|
int dayofepoch (int, int, int);
|
|
int dayofepoch ()
|
|
{ return dayofepoch (year, month, day); }
|
|
|
|
int dayofweek (int, int, int);
|
|
int dayofweek ()
|
|
{ return dayofweek (year, month, day); }
|
|
|
|
char *szDate (int);
|
|
char *szDate ();
|
|
double dJulian ();
|
|
|
|
bool operator==( const Date & );
|
|
bool operator!=( const Date & );
|
|
bool operator<( const Date & );
|
|
bool operator>( const Date & );
|
|
void operator=( const Date & );
|
|
const Date &operator+=( int); // add days, modify object
|
|
Date &operator++(); // pre-increment operator
|
|
Date operator++( int ); // post-increment operator
|
|
|
|
};
|
|
|
|
#endif
|