⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timestamp.h

📁 一个c++实现的acd的例子。 ----ACDCommandListener.cpp ---ACDCommandListenerThread.cpp ---ACDConfig.cpp ---a
💻 H
字号:
#if !defined(TimeStamp_H)
#define TimeStamp_H


#include <string>
#include <sstream>
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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -