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 #ifndef _terimber_date_h_
00029 #define _terimber_date_h_
00030
00031 #include "allinc.h"
00032
00033 BEGIN_TERIMBER_NAMESPACE
00034 #pragma pack(4)
00035
00038 class date
00039 {
00040 public:
00042 date(bool utc = false);
00044 date( const char* x,
00045 size_t len = os_minus_one
00046 );
00048 date( const wchar_t* x,
00049 size_t len = os_minus_one
00050 );
00052 date( const double* x
00053 );
00055 date( double x
00056 );
00058 date( sb8_t x
00059 );
00061 operator double() const;
00063 operator sb8_t() const;
00064
00066 static
00067 bool
00068 convert_to( ub4_t year,
00069 ub1_t month,
00070 ub1_t day,
00071 ub1_t hour,
00072 ub1_t minute,
00073 ub1_t second,
00074 ub2_t millisec,
00075 sb8_t& dt
00076 );
00078 static
00079 bool
00080 convert_from( sb8_t dt,
00081 ub4_t& year,
00082 ub1_t& month,
00083 ub1_t& day,
00084 ub1_t& hour,
00085 ub1_t& minute,
00086 ub1_t& second,
00087 ub2_t& millisec,
00088 ub1_t& wday,
00089 ub2_t& yday
00090 );
00092 bool
00093 operator<(const date& x) const;
00095 bool
00096 operator==(const date& x) const;
00098 bool
00099 operator!=(const date& x) const;
00101 bool
00102 operator<=(const date& x) const;
00104 bool
00105 operator>(const date& x) const;
00107 bool
00108 operator>=(const date& x) const;
00110 bool
00111 is_time_over( sb8_t x
00112 ) const;
00114 static
00115 sb8_t
00116 get_difference( sb8_t old_date
00117 );
00119 date& operator+=(sb8_t interval);
00121 date& operator-=(sb8_t interval);
00123 const char*
00124 get_date( char* buffer
00125 ) const;
00127 const wchar_t*
00128 get_date( wchar_t* buffer
00129 ) const;
00130
00132 const char*
00133 get_date_only( char* buffer,
00134 const char* format
00135 ) const;
00137 const wchar_t*
00138 get_date_only( wchar_t* buffer,
00139 const wchar_t* format
00140 ) const;
00141
00142 private:
00144 void
00145 set_date( const char* x
00146 );
00148 void
00149 set_date( const wchar_t* x
00150 );
00151
00153 static
00154 bool
00155 scan_buffer( const char*& x,
00156 size_t count,
00157 size_t delimeter_size,
00158 sb4_t& dest
00159 );
00160
00162 static
00163 bool
00164 scan_buffer( const wchar_t*& x,
00165 size_t count,
00166 size_t delimeter_size,
00167 sb4_t& dest
00168 );
00169 private:
00171 void
00172 set_double( double x
00173 );
00174 private:
00175 sb8_t _ticks;
00176 static ub2_t _month_days[13];
00177 static const sb8_t _70years;
00178 static const sb8_t _1899years;
00179 static const sb8_t _daymillisecond;
00180 };
00181
00182 #pragma pack()
00183 END_TERIMBER_NAMESPACE
00184
00185 #endif // _terimber_date_h_
00186