eis/inc/base/TCMTime.h

203 lines
5.7 KiB
C
Raw Permalink Normal View History

/*********************************************************************
*
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: TCMTime.h ͨ<EFBFBD>õ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
*
* <EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Shanghai Baosight Software Co., Ltd.
*
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>õ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰʱ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>
*
* <EFBFBD><EFBFBD><EFBFBD>ʷ
* 1.0 2010-06-17 echo_li <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* %USER%
*********************************************************************/
#ifndef TCMTIME_H_
#define TCMTIME_H_
#include <string.h>
#include <stdio.h>
#include <string>
#ifdef _WIN32
# include <sys/timeb.h>
# include <time.h>
# include <Windows.h>
#pragma warning (disable : 4996)
#else
# include <sys/time.h>
#endif
#ifdef _WIN32
#define timezone _timezone
#else
#define timezone __timezone
#endif
using namespace std;
const time_t TIMEMAX = 2147426047;
namespace baosight{
enum MonthsEnum
{
jan = 1,
feb,
mar,
apr,
may,
jun,
jul,
aug,
sep,
oct,
nov,
dec
};
/*********************************************************************
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: TCMTime
* <EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>: Shanghai Baosight Software Co., Ltd.
* <EFBFBD><EFBFBD> ְ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>õ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰʱ<EFBFBD><EFBFBD>,<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD>ʷ
* 1.0 2010-06-17 echo_li <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
*********************************************************************/
class TCMTime
{
public:
TCMTime();
TCMTime(time_t now);//ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>
TCMTime(struct tm now);//ʹ<><CAB9>struct tm<74><6D><EFBFBD>г<EFBFBD>ʼ<EFBFBD><CABC>
TCMTime(const TCMTime& now);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCMTime(const string &str,string pattern="yyyyMMddhhmiss");
public:
~TCMTime();
public:
TCMTime& operator +(const long& second);//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCMTime& operator -(const long& second);//<2F><>ȥһ<C8A5><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCMTime& operator =(const TCMTime &curTime);
bool operator ==(const TCMTime &ComTime);
bool operator !=(const TCMTime &ComTime);
TCMTime& operator +=(const long& sec);//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TCMTime& operator -=(const long& sec);//<2F><>ȥһ<C8A5><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
friend long operator -(TCMTime& t1,TCMTime&t2);//<2F><><EFBFBD><EFBFBD>2<EFBFBD><32>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
public:
/**********************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳʱ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SetSystemTime
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> short
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȡֵ<EFBFBD><EFBFBD>Χ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* <EFBFBD><EFBFBD><EFBFBD>ʷ
* 1.0 2010-09-02 echo_li <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
*
**********************************************************************/
short SetSystemTime();//<2F><><EFBFBD><EFBFBD>ϵͳʱ<CDB3><CAB1>
public:
/**********************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ǰʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1970<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GetSec70
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> time_t
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȡֵ<EFBFBD><EFBFBD>Χ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* <EFBFBD><EFBFBD><EFBFBD>ʷ
* 1.0 2010-09-02 echo_li <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
*
**********************************************************************/
time_t GetSec70()const;//
/**********************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GetTimeOffset
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> int
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȡֵ<EFBFBD><EFBFBD>Χ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* <EFBFBD><EFBFBD><EFBFBD>ʷ
* 1.0 2010-09-02 echo_li <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
*
**********************************************************************/
int GetTimeOffset();//
public:
int Year(){return m_year;}//ȡ<><C8A1>
int Month(){return m_month;}//ȡ<><C8A1>
int Day(){return m_day;}//ȡ<><C8A1>
int Hour(){return m_hour;}//ȡʱ
int Minute(){return m_minute;}//ȡ<><C8A1>
int Second(){return m_second;}//ȡ<><C8A1>
public:
string ToString(char* format=NULL);//ת<><D7AA><EFBFBD><EFBFBD>String
time_t ToSec70();//ת<><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
public:
/**********************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ȡ<EFBFBD><EFBFBD>ǰʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰʱ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Now
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> baosight::TCMTime
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȡֵ<EFBFBD><EFBFBD>Χ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* <EFBFBD><EFBFBD><EFBFBD>ʷ
* 1.0 2010-09-02 echo_li <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
*
**********************************************************************/
static TCMTime Now();//
/**********************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ȡgtm<EFBFBD><EFBFBD>ǰʱ<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> GTMNow
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> baosight::TCMTime
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȡֵ<EFBFBD><EFBFBD>Χ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* <EFBFBD><EFBFBD><EFBFBD>ʷ
* 1.0 2010-09-02 echo_li <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
*
**********************************************************************/
static TCMTime GTMNow();//
static string ToString(time_t t,char* format=NULL);//<2F><>time_t<5F><74>ʽ<EFBFBD><CABD>ʱ<EFBFBD><CAB1>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>string<6E><67>ʽ
static time_t ToSec70(string t);//<2F><>string<6E><67>ʽ<EFBFBD><CABD>ʱ<EFBFBD><CAB1>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>time_t
public:
/**********************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SetTimeZone
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD> void
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȡֵ<EFBFBD><EFBFBD>Χ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* <EFBFBD><EFBFBD><EFBFBD>ʷ
* 1.0 2010-09-02 echo_li <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
*
**********************************************************************/
void SetTimeZone();//
void AddOneDay();//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
void SubOneDay();//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
private:
void SetTime(struct tm TM);
private:
int m_year;
MonthsEnum m_month;
int m_day;
int m_hour;
int m_minute;
int m_second;
time_t m_sec70;
private:
const static int MAX_YEAR = 2038;
const static int MAX_MONTH = 1;
const static int MAX_DAY = 18;
const static int MAX_HOUR = 19;
const static int MAX_MINUTE = 14;
const static int MAX_SECOND = 7;
const static int MIN_YEAR = 1970;
const static int MIN_MONTH = 1;
const static int MIN_DAY = 1;
const static int MIN_HOUR = 0;
const static int MIN_MINUTE = 0;
const static int MIN_SECOND = 0;
const static int DAY_SECONDS = 86400;
};
long operator -(TCMTime& t1,TCMTime&t2); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><D8B2><EFBFBD><EFBFBD><EFBFBD>
}
#endif