www.pudn.com > acdx.rar > TimeStamp.h
#if !defined(TimeStamp_H) #define TimeStamp_H #include#include using namespace std; #define MIN_DATE (-657434L) // about year 100 #define MAX_DATE 2958465L // about year 9999 double DoubleFromDate ( DATE dt ); DATE DateFromDouble ( double dbl ); /* // Verifies will fail if the needed buffer size is too large #define MAX_TIME_BUFFER_SIZE 128 // matches that in timecore.cpp // Half a second, expressed in days #define HALF_SECOND (1.0/172800.0) BOOL OleDateFromTm ( WORD wYear, WORD wMonth, WORD wDay, WORD wHour, WORD wMinute, WORD wSecond, DATE& dtDest ); BOOL TmFromOleDate ( DATE dtSrc, struct tm& tmDest ); void TmConvertToStandardFormat ( struct tm& tmSrc ); double DoubleFromDate ( DATE dt ); DATE DateFromDouble ( double dbl ); */ ////////////////////////////////////////////////////////////////////////////////// // TimeStamp //##ModelId=424BB63F03A1 class TimeStamp { //##ModelId=424BB63F03B2 DATE m_timestamp; //##ModelId=424BB63F03B6 long m_valid; //##ModelId=424BB63F03C0 bool m_standard; //##ModelId=424BB63F03D1 string m_format; public: //##ModelId=424BB63F03E0 TimeStamp (); //##ModelId=424BB63F03E1 TimeStamp ( TimeStamp& dateSrc ); //##ModelId=424BB6400007 TimeStamp ( VARIANT& varSrc ); //##ModelId=424BB6400009 TimeStamp ( DATE dtSrc ); //##ModelId=424BB6400017 TimeStamp ( SYSTEMTIME& systimeSrc ); //##ModelId=424BB6400019 TimeStamp ( FILETIME& filetimeSrc); //##ModelId=424BB6400027 TimeStamp ( long nYear, long nMonth, long nDay, long nHour, long nMin, long nSec ); // enum to show if timestamp valid enum { valid = 0, invalid = 1, // Invalid date (out of range, etc.) null = 2, // Literally has no value }; // format methods //##ModelId=424BB6400046 string format ( LPTSTR strFormat ); //##ModelId=424BB6400048 void setDefaultFormat (); //##ModelId=424BB6400055 void setFormat ( string & strFormat ); //##ModelId=424BB6400057 void getTimeStr ( string & timeStr, bool showSeconds ); //##ModelId=424BB6400066 void getDateStr ( string & dateStr, bool useShortDateFormat ); //##ModelId=424BB6400076 bool getTimeStamp ( string & str, bool showSeconds = false ); //##ModelId=424BB6400084 bool getTimeStamp ( string & str, string & format, DWORD dwFlags = 0, LCID lcid = LANG_USER_DEFAULT ); //##ModelId=424BB6400095 static void getTimeStamp ( DATE timestamp, string & str ); // get current and store //##ModelId=424BB64000A5 void getCurTimeStamp (); //##ModelId=424BB64000A6 static void getCurTimeStamp ( DATE & timestamp ); //##ModelId=424BB64000B4 static void getCurTimeStamp ( string & str ); // access methods //##ModelId=424BB64000C3 long getStatus (); //##ModelId=424BB64000C4 long getYear (); //##ModelId=424BB64000C5 long getMonth (); // month of year (1 = Jan) //##ModelId=424BB64000D2 long getDay (); // day of month (0-31) //##ModelId=424BB64000D3 long getHour (); // hour in day (0-23) //##ModelId=424BB64000E2 long getMinute (); // minute in hour (0-59) //##ModelId=424BB64000E3 long getSecond (); // second in minute (0-59) //##ModelId=424BB64000E4 long getDayOfWeek (); // 0=Sun, 1=Mon, ..., 6=Sat //##ModelId=424BB64000F2 double getDays (); // span in days //##ModelId=424BB64000F3 double getHours (); // span in hours //##ModelId=424BB64000F4 double getMinutes (); // span in minutes //##ModelId=424BB6400101 double getSeconds (); // span in seconds // copy methods //##ModelId=424BB6400102 void operator = ( const TimeStamp& dateSrc ); //##ModelId=424BB6400112 void operator = ( VARIANT& varSrc ); //##ModelId=424BB6400122 void operator = ( DATE dtSrc ); //##ModelId=424BB6400131 void operator = ( SYSTEMTIME& systimeSrc ); //##ModelId=424BB640014F void operator = ( FILETIME& filetimeSrc ); // compare methods //##ModelId=424BB6400151 bool operator == ( const TimeStamp& date ); //##ModelId=424BB640016F bool operator != ( const TimeStamp& date ); //##ModelId=424BB640017E bool operator < ( const TimeStamp& date ); //##ModelId=424BB640018E bool operator > ( const TimeStamp& date ); //##ModelId=424BB6400190 bool operator <= ( const TimeStamp& date ); //##ModelId=424BB640019E bool operator >= ( const TimeStamp& date ); // math methods //##ModelId=424BB64001A0 TimeStamp operator + ( TimeStamp & dateSpan ); //##ModelId=424BB64001AE TimeStamp operator - ( TimeStamp & dateSpan ); //##ModelId=424BB64001BD TimeStamp & operator += ( TimeStamp dateSpan ); //##ModelId=424BB64001BF TimeStamp & operator -= ( TimeStamp dateSpan ); //##ModelId=424BB64001CD operator DATE(); // set/get datestamp methods //##ModelId=424BB64001CE void setDateTime ( long year, long month, long day, long hour, long minute, long second ); //##ModelId=424BB64001EE void setDate ( long year, long month, long day ); //##ModelId=424BB64001FE void setTime ( long hour, long minute, long second ); //##ModelId=424BB640021B void setTime ( SYSTEMTIME & sysTime ); //##ModelId=424BB640021D void setDate ( SYSTEMTIME & sysTime ); //##ModelId=424BB640022B void getDate ( long & year, long & month, long & day ); //##ModelId=424BB640023C void getTime ( long & hour, long & minute, long & second ); //##ModelId=424BB640024B void getTime ( SYSTEMTIME & sysTime ); //##ModelId=424BB640025A void getDate ( SYSTEMTIME & sysTime ); // check if valid //##ModelId=424BB6400269 bool isValid (); // shows if time is empty //##ModelId=424BB640026A bool empty (); }; //##ModelId=424BB640026A inline bool TimeStamp::empty () { if ( !isValid() || m_timestamp == 0 ) return false; else return true; } //##ModelId=424BB640022B inline void TimeStamp::getDate ( long & year, long & month, long & day ) { SYSTEMTIME sysTime; VariantTimeToSystemTime( m_timestamp, &sysTime ); year = sysTime.wYear; month = sysTime.wMonth; day = sysTime.wDay; } //##ModelId=424BB640023C inline void TimeStamp::getTime ( long & hour, long & minute, long & second ) { SYSTEMTIME sysTime; VariantTimeToSystemTime( m_timestamp, &sysTime ); hour = sysTime.wHour; minute = sysTime.wMinute; second = sysTime.wSecond; } //##ModelId=424BB640024B inline void TimeStamp::getTime ( SYSTEMTIME & sysTime ) { VariantTimeToSystemTime( m_timestamp, &sysTime ); } //##ModelId=424BB640025A inline void TimeStamp::getDate ( SYSTEMTIME & sysTime ) { VariantTimeToSystemTime( m_timestamp, &sysTime ); } //##ModelId=424BB64001EE inline void TimeStamp::setDate(long year, long month, long day ) { setDateTime(year, month, day, 0, 0, 0); } //##ModelId=424BB64001FE inline void TimeStamp::setTime(long hour, long minute, long second) { // Set date to zero date - 12/30/1899 setDateTime(1899, 12, 30, hour, minute, second); } //##ModelId=424BB640021B inline void TimeStamp::setTime ( SYSTEMTIME & sysTime ) { // Set date to zero date - 12/30/1899 setDateTime(1899, 12, 30, sysTime.wHour, sysTime.wMinute, sysTime.wSecond); } //##ModelId=424BB640021D inline void TimeStamp::setDate ( SYSTEMTIME & sysTime ) { setDateTime(sysTime.wYear, sysTime.wMonth, sysTime.wDay, 0, 0, 0); } //##ModelId=424BB64000F2 inline double TimeStamp::getDays() { _ASSERT(m_valid == valid); return m_timestamp; } //##ModelId=424BB64000F3 inline double TimeStamp::getHours() { _ASSERT(m_valid == valid); return m_timestamp * 24; } //##ModelId=424BB64000F4 inline double TimeStamp::getMinutes() { _ASSERT(m_valid == valid); return m_timestamp * 24 * 60; } //##ModelId=424BB6400101 inline double TimeStamp::getSeconds() { _ASSERT(m_valid == valid); return m_timestamp * 24 * 60 * 60; } /* inline long TimeStamp::getDays() { _ASSERT(m_valid == valid); return (long)m_timestamp; } */ //##ModelId=424BB6400102 inline void TimeStamp::operator=( const TimeStamp& dateSrc) { m_timestamp = dateSrc.m_timestamp; m_valid = dateSrc.m_valid; } //##ModelId=424BB6400151 inline bool TimeStamp::operator==(const TimeStamp& date) { return (m_valid == date.m_valid && m_timestamp == date.m_timestamp); } //##ModelId=424BB640016F inline bool TimeStamp::operator!=(const TimeStamp& date) { return (m_valid != date.m_valid || m_timestamp != date.m_timestamp); } //##ModelId=424BB64001BD inline TimeStamp& TimeStamp::operator+=(TimeStamp dateSpan) { *this = *this + dateSpan; return *this; } //##ModelId=424BB64001BF inline TimeStamp& TimeStamp::operator-=(TimeStamp dateSpan) { *this = *this - dateSpan; return *this; } //##ModelId=424BB64001CD inline TimeStamp::operator DATE() { return m_timestamp; } #endif