00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00049 #ifndef __XB_XDATE_H__
00050 #define __XB_XDATE_H__
00051
00052 #ifdef __GNUG__
00053 #pragma interface
00054 #endif
00055
00056 #ifdef __WIN32__
00057 #include <xbase/xbconfigw32.h>
00058 #else
00059 #include <xbase/xbconfig.h>
00060 #endif
00061
00062 #include <xbase/xbstring.h>
00063
00064 #define XB_FMT_WEEK 1
00065 #define XB_FMT_MONTH 2
00066 #define XB_FMT_YEAR 3
00067
00069
00072 class XBDLLEXPORT xbDate {
00073 public:
00074 xbDate();
00075 xbDate( const char * Date8 );
00076 xbDate( const xbString &Date8 );
00077 virtual ~xbDate();
00078
00080
00082 const xbString & GetDate() const
00083 { return cDate8; };
00085
00087 xbString & GetDate()
00088 { return cDate8; };
00090
00092 const xbString & GetFormattedDate() const
00093 { return fDate; };
00095
00097 xbString & GetFormattedDate()
00098 { return fDate; };
00099
00100 int SetDate( const char * Date8 );
00102
00104 int SetDate( const xbString & Date8 )
00105 { return SetDate((const char *) Date8 ); };
00106
00107 long JulianDays ( const char *Date8 ) const;
00109
00111 long JulianDays ( const xbString & Date8 ) const
00112 { return JulianDays((const char *) Date8 ); };
00114
00116 long JulianDays () const
00117 { return JulianDays((const char *) cDate8 ); };
00118
00119 int YearOf ( const char *Date8 ) const;
00121
00123 int YearOf ( const xbString & Date8 ) const
00124 { return YearOf((const char *) Date8 ); };
00126
00128 int YearOf () const
00129 { return YearOf((const char *) cDate8 ); };
00130
00131 int MonthOf ( const char *Date8 ) const;
00133
00135 int MonthOf ( const xbString &Date8 ) const
00136 { return MonthOf((const char *) Date8 ); };
00138
00140 int MonthOf () const
00141 { return MonthOf(( const char *) cDate8 ); };
00142
00143 int DayOf ( int Format, const char *Date8 ) const;
00145
00147 int DayOf ( int Format, const xbString &Date8 ) const
00148 { return DayOf( Format, (const char *) Date8 ); };
00150
00152 int DayOf ( int Format ) const
00153 { return DayOf( Format, (const char *) cDate8 ); };
00154
00155 int IsLeapYear ( const char *Date8 ) const;
00157
00159 int IsLeapYear ( const xbString &Date8 ) const
00160 { return IsLeapYear((const char *) Date8 ); };
00162
00164 int IsLeapYear () const
00165 { return IsLeapYear((const char *) cDate8 ); };
00166
00167 int DateIsValid ( const char *Date8 ) const;
00169
00171 int DateIsValid ( const xbString & Date8 ) const
00172 { return DateIsValid( (const char *) Date8 ); };
00173
00174 xbString& LastDayOfMonth( const char *Date8 );
00176
00178 xbString& LastDayOfMonth( const xbString & Date8 )
00179 { return LastDayOfMonth((const char *) Date8 ); };
00181
00183 xbString& LastDayOfMonth()
00184 { return LastDayOfMonth((const char *) cDate8 ); };
00185
00186 xbString& Sysdate ();
00187 xbString& JulToDate8( long );
00188
00189 xbString& FormatDate( const char *Format, const char *Date8 );
00191
00193 xbString& FormatDate( const xbString &Format, const char *Date8 )
00194 { return FormatDate((const char *) Format, Date8 ); };
00196
00198 xbString& FormatDate( const char *Format, const xbString &Date8 )
00199 { return FormatDate( Format, (const char *) Date8 ); };
00201
00203 xbString& FormatDate( const xbString &Format, const xbString &Date8 )
00204 { return FormatDate((const char *) Format,(const char *) Date8 ); };
00206
00208 xbString& FormatDate( const char *Format )
00209 { return FormatDate( (const char *) Format, (const char *) cDate8 ); };
00211
00213 xbString& FormatDate( const xbString &Format )
00214 { return FormatDate((const char *) Format, (const char *) cDate8 ); };
00215
00216 xbString& CharDayOf ( const char *Date8 );
00218
00220 xbString& CharDayOf ( const xbString &Date8 )
00221 { return CharDayOf((const char *) Date8 ); };
00223
00225 xbString& CharDayOf ()
00226 { return CharDayOf((const char *) cDate8 ); };
00227
00228 xbString& CharMonthOf ( const char *Date8 );
00230
00232 xbString& CharMonthOf ( const xbString &Date8 )
00233 { return CharMonthOf(( const char *) Date8 ); };
00235
00237 xbString& CharMonthOf ()
00238 { return CharMonthOf(( const char *) cDate8 ); };
00239
00240 xbString &operator+=( int );
00241 xbString &operator-=( int );
00242 xbString &operator++( int );
00243 xbString &operator--( int );
00244 xbString &operator+ ( int );
00245 xbString &operator- ( int );
00246 long operator-( const xbDate & ) const;
00247 int operator==( const xbDate & ) const;
00248 int operator!=( const xbDate & ) const;
00249 int operator< ( const xbDate & ) const;
00250 int operator> ( const xbDate & ) const;
00251 int operator<=( const xbDate & ) const;
00252 int operator>=( const xbDate & ) const;
00253
00254 protected:
00255 void SetDateTables();
00256 xbString cDate8;
00257 xbString fDate;
00258 static int AggregatedDaysInMonths[2][13];
00259 static int DaysInMonths[2][13];
00260 static const xbString *Days[7];
00261 static const xbString *Months[12];
00262 };
00263
00264 #endif // __XB_XDATE_H__
00265