📄 timestamp.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 + -