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