Introduction
Everyone, from time to time faces the problem that CRT "time" does not meet the requirements of the task. Mostly it's lack of date range, a lot of things have happened before the year 1970. I've implemented a simple class that keeps date/time as seconds elapsed since "01 Jan, 0001 00:00:00". It allows converting numeric representation of date/time to seconds and vice versa. Also, it allows to add/subtract a period of time.
The class can be modified very simply to meet the extra requirements you might have.
Classes
CUDateTime
- class representing DateTime as seconds elapsed since "01 Jan, 0001 00:00:00".
SUDateTime
- helper structure representing DateTime as a set of unsigned short's.
CUDateSpan
- helper class representing period of time to add to date or to subtract from date.
Interface of CUDateTime class
CUDateTime ( y, m, d, h, n, s )
CUDateTime ( const CUDateTime & )
CUDateTime ( const SUDateTime & )
unsigned short WeekDay ( void ) const
- returns day of week [0-6] (Sun-Sat).
operator SUDateTime ( void ) const
- converts to SUDateTime
.
operator std::wstring ( void ) const
- converts to std::wstring
.
friend bool operator < ( const CUDateTime &, const CUDateTime & )
- operator less.
friend bool operator == ( const CUDateTime &, const CUDateTime & )
- operator equal.
friend CUDateTime operator + ( const CUDateTime &, const CUDateSpan & )
- add span to date.
friend CUDateTime operator - ( const CUDateTime &, const CUDateSpan & )
- subtract span from date.
friend CUDateTime & operator -= ( CUDateTime &, const CUDateSpan & )
- add span to date.
friend CUDateTime & operator += ( CUDateTime &, const CUDateSpan & )
- subtract span from date.
Interface of CUDateSpan class
CUDateSpan ( void )
CUDateSpan ( const CUDateSpan & )
CUDateSpan ( d, h, n, s )
Example of usage
CUDateTime dt ( 2005, 6, 22, 21, 22, 15 );
SUDateTime sdt = dt + CUDateSpan ( 1, 1, 0, 3 );
wprintf ( L"%s", ( ( std::wstring ) CUDateTime ( sdt ) ).c_str () );