156 lines
6.4 KiB
C
156 lines
6.4 KiB
C
|
|
/*//===============================================================
|
|||
|
|
|
|||
|
|
<< TIME SET >>
|
|||
|
|
|
|||
|
|
FILE : TIMESET.H, TIMESET.CPP
|
|||
|
|
DESC : <EFBFBD>ð<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ŭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
INIT BUILT DATE : 2007. 04. 22
|
|||
|
|
LAST BUILT DATE : 2008. 05. 29
|
|||
|
|
|
|||
|
|
P.S.>
|
|||
|
|
- tm <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
int tm_sec : <EFBFBD><EFBFBD> (0 ~ 59) (*)
|
|||
|
|
int tm_min : <EFBFBD><EFBFBD> 0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 59 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>(minute) (*)
|
|||
|
|
int tm_hour : <EFBFBD><EFBFBD> 0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 23<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>(hours) (*)
|
|||
|
|
int tm_mday : <EFBFBD><EFBFBD> (<EFBFBD>Ѵ<EFBFBD><EFBFBD>ֱ<EFBFBD>, 1 ~ 31) (*)
|
|||
|
|
int tm_mon : <EFBFBD><EFBFBD> (0 ~ 11) (*)
|
|||
|
|
int tm_year : <EFBFBD><EFBFBD> (1900<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>) (*)
|
|||
|
|
int tm_wday : <EFBFBD><EFBFBD> (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>, 0 ~ 6)
|
|||
|
|
int tm_yday : <EFBFBD><EFBFBD> (<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>, 0 ~ 365)
|
|||
|
|
int tm_isdst : <EFBFBD>ϱ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>ð<EFBFBD><EFBFBD><EFBFBD> (<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ÿ<EFBFBD><EFBFBD>) <EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
P.S.> <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> __time32_t, __time64_t <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>
|
|||
|
|
|
|||
|
|
- DBTIMESTAMP <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ü <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
SHORT year : <EFBFBD><EFBFBD> (A.D. <EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 ~ 9999)
|
|||
|
|
USHORT month : <EFBFBD><EFBFBD> (1 ~ 12)
|
|||
|
|
USHORT day : <EFBFBD><EFBFBD> (1 ~ 31)
|
|||
|
|
USHORT hour : <EFBFBD><EFBFBD> (0 ~ 23)
|
|||
|
|
USHORT minute : <EFBFBD><EFBFBD> (0 ~ 59)
|
|||
|
|
USHORT second : <EFBFBD><EFBFBD> (0 ~ 59)
|
|||
|
|
ULONG fraction : <EFBFBD><EFBFBD><EFBFBD>е<EFBFBD> (1/10<EFBFBD><EFBFBD> <EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD> ǥ<EFBFBD><EFBFBD>, 0 ~ 999,999,999)
|
|||
|
|
|
|||
|
|
- __time32_t <EFBFBD><EFBFBD><EFBFBD>е<EFBFBD> : 1970-01-01 00:00:00 ~ 2038-01-18 12:14:07
|
|||
|
|
- __time64_t <EFBFBD><EFBFBD><EFBFBD>е<EFBFBD> : 1970-01-01 00:00:00 ~ 2999-12-31 23:59:59
|
|||
|
|
|
|||
|
|
Copyright<EFBFBD><EFBFBD> 2002~2009 B4nFter (b4nfter@gmail.com) and Co-Writers. All Rights Reserved.
|
|||
|
|
|
|||
|
|
*///===============================================================
|
|||
|
|
|
|||
|
|
|
|||
|
|
#pragma once
|
|||
|
|
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
// INCLUDE
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
#include <WINDOWS.H>
|
|||
|
|
#include <OLEDB.H>
|
|||
|
|
#include <sqltypes.h>
|
|||
|
|
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
// DEFINE
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
#define DF_TM_YEAR_EPOCH (1900) // tm <20><><EFBFBD><EFBFBD>ü <20> <20><><EFBFBD><EFBFBD> <20><>
|
|||
|
|
#define DF_TIME32_MAX (0x7FFFFFFF) // __time32_t <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ밪
|
|||
|
|
#define DF_TIME64_MAX (0x00000007933FF16F) // __time64_t <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ִ밪
|
|||
|
|
|
|||
|
|
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
// DECLARATION
|
|||
|
|
///////////////////////////////////////////////////////////////////
|
|||
|
|
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// TYPE : CLASS
|
|||
|
|
// NAME : CTimeSet
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
// DESC : <20>ð<EFBFBD> <20><><EFBFBD><EFBFBD> Ŭ<><C5AC><EFBFBD><EFBFBD>
|
|||
|
|
// PRGM : B4nFter
|
|||
|
|
//*---------------------------------------------------------------
|
|||
|
|
class CTimeSet
|
|||
|
|
{
|
|||
|
|
public:
|
|||
|
|
// SYSTEMTIME::wDayOfWeek <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD> <20><>
|
|||
|
|
enum EF_DAYOFWEEK { EV_DAYOFWEEK_SUN=0, EV_DAYOFWEEK_MON, EV_DAYOFWEEK_TUE, EV_DAYOFWEEK_WEN, EV_DAYOFWEEK_THU, EV_DAYOFWEEK_FRI, EV_DAYOFWEEK_SAT };
|
|||
|
|
public:
|
|||
|
|
CTimeSet();
|
|||
|
|
CTimeSet(WORD wYear, WORD wMonth, WORD wDay, WORD wHour, WORD wMinute, WORD wSecond);
|
|||
|
|
CTimeSet(const __time32_t& pTime, bool pIsLocal); // 20100506
|
|||
|
|
CTimeSet(const __time64_t& pTime, bool pIsLocal); // 20100506
|
|||
|
|
CTimeSet(const char* szTime, bool pIsLocal); // 20110104 by robust
|
|||
|
|
explicit CTimeSet(const FILETIME& stTime);
|
|||
|
|
explicit CTimeSet(const SYSTEMTIME& stTime);
|
|||
|
|
explicit CTimeSet(const DBTIMESTAMP& stTime);
|
|||
|
|
|
|||
|
|
public:
|
|||
|
|
WORD GetYear() const { return m_stLocalTime.wYear; }
|
|||
|
|
WORD GetMonth() const { return m_stLocalTime.wMonth; }
|
|||
|
|
WORD GetDay() const { return m_stLocalTime.wDay; }
|
|||
|
|
WORD GetHour() const { return m_stLocalTime.wHour; }
|
|||
|
|
WORD GetMinute() const { return m_stLocalTime.wMinute; }
|
|||
|
|
WORD GetSecond() const { return m_stLocalTime.wSecond; }
|
|||
|
|
WORD GetMilliseconds() const { return m_stLocalTime.wMilliseconds; }
|
|||
|
|
WORD GetDayOfWeek() const { return m_stLocalTime.wDayOfWeek ; }
|
|||
|
|
|
|||
|
|
const SYSTEMTIME& GetSystemTime() const { return m_stLocalTime; }
|
|||
|
|
SYSTEMTIME& GetSystemTime() { return m_stLocalTime; }
|
|||
|
|
__time32_t GetTimeT32_LC() const; // 20100506
|
|||
|
|
__time64_t GetTimeT64_LC() const; // 20100506
|
|||
|
|
__time32_t GetTimeT32_GM() const; // 20100506
|
|||
|
|
__time64_t GetTimeT64_GM() const; // 20100506
|
|||
|
|
|
|||
|
|
TIMESTAMP_STRUCT& GetDBTimeStampStruct();
|
|||
|
|
DBTIMESTAMP& GetDbTimeStamp();
|
|||
|
|
DBDATE& GetDBDate();
|
|||
|
|
|
|||
|
|
EF_DAYOFWEEK CalculateDayOfWeek(); // 20100728
|
|||
|
|
|
|||
|
|
VOID Reset();
|
|||
|
|
VOID Set(WORD wYear, WORD wMonth, WORD wDay, WORD wHour, WORD wMinute,WORD wSecond);
|
|||
|
|
VOID Set(const __time32_t& pTime, bool pIsLocal);
|
|||
|
|
VOID Set(const __time64_t& pTime, bool pIsLocal);
|
|||
|
|
VOID Set(const FILETIME& stTime);
|
|||
|
|
VOID Set(const SYSTEMTIME& stTime);
|
|||
|
|
VOID Set(const DBTIMESTAMP& stTime);
|
|||
|
|
|
|||
|
|
DWORD GetTimeTo(EF_DAYOFWEEK eDayOfWeek, WORD wHour, WORD wMinute, WORD wSecond); // <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD> : <20><> (<28><><EFBFBD><EFBFBD>:1/1000<30><30>)
|
|||
|
|
DWORD GetTimeTo(WORD wHour, WORD wMinute, WORD wSecond); // <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD> : <20><> (<28><><EFBFBD><EFBFBD>:1/1000<30><30>)
|
|||
|
|
DWORD GetTimeTo(WORD wMinute, WORD wSecond); // <20>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD> : <20>ð<EFBFBD> (<28><><EFBFBD><EFBFBD>:1/1000<30><30>)
|
|||
|
|
|
|||
|
|
INT CompareFileTime(const FILETIME& stFileTime1, const FILETIME& stFileTime2); // stFileTime1 <20><> stFileTime2 <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ū<><C5AB> <20><><EFBFBD><EFBFBD> (-1:ù<><C3B9>°ŭ / 0:<3A><><EFBFBD><EFBFBD> / 1:<3A>ι<EFBFBD>°ŭ)
|
|||
|
|
BOOL CheckIntegrity();
|
|||
|
|
|
|||
|
|
VOID AddSecond(INT64 ui64Second); // 20100728
|
|||
|
|
INT64 operator-(const CTimeSet& pTime) const;
|
|||
|
|
|
|||
|
|
static VOID ConvertFileTimeToDbTimeStamp(const FILETIME* lpFileTime, DBTIMESTAMP* lpDbTime);
|
|||
|
|
static VOID ConvertDbTimeStampToFileTime(const DBTIMESTAMP* lpDbTime, FILETIME* lpFileTime);
|
|||
|
|
static __time32_t ConvertTmToTimeT32_LC(tm* lpTm);
|
|||
|
|
static __time64_t ConvertTmToTimeT64_LC(tm* lpTm);
|
|||
|
|
static __time32_t ConvertTmToTimeT32_GM(tm* lpTm);
|
|||
|
|
static __time64_t ConvertTmToTimeT64_GM(tm* lpTm);
|
|||
|
|
static __time32_t ConvertDbTimeStampToTimeT32_LC(const DBTIMESTAMP* lpDbTime);
|
|||
|
|
static __time64_t ConvertDbTimeStampToTimeT64_LC(const DBTIMESTAMP* lpDbTime);
|
|||
|
|
static __time32_t ConvertDbTimeStampToTimeT32_GM(const DBTIMESTAMP* lpDbTime);
|
|||
|
|
static __time64_t ConvertDbTimeStampToTimeT64_GM(const DBTIMESTAMP* lpDbTime);
|
|||
|
|
static BOOL ConvertTimeT32ToTm_LC(__time32_t pTimeT32, tm* lpTm);
|
|||
|
|
static BOOL ConvertTimeT64ToTm_LC(__time64_t pTimeT64, tm* lpTm);
|
|||
|
|
static BOOL ConvertTimeT32ToTm_GM(__time32_t pTimeT32, tm* lpTm);
|
|||
|
|
static BOOL ConvertTimeT64ToTm_GM(__time64_t pTimeT64, tm* lpTm);
|
|||
|
|
static BOOL ConvertTimeT32ToDbTimeStamp_LC(__time32_t pTimeT32, DBTIMESTAMP* lpDbTime);
|
|||
|
|
static BOOL ConvertTimeT64ToDbTimeStamp_LC(__time64_t pTimeT64, DBTIMESTAMP* lpDbTime);
|
|||
|
|
static BOOL ConvertTimeT32ToDbTimeStamp_GM(__time32_t pTimeT32, DBTIMESTAMP* lpDbTime);
|
|||
|
|
static BOOL ConvertTimeT64ToDbTimeStamp_GM(__time64_t pTimeT64, DBTIMESTAMP* lpDbTime);
|
|||
|
|
static EF_DAYOFWEEK CalculateDayOfWeek(WORD wYear, WORD wMonth, WORD wDay); // 20100728
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
SYSTEMTIME m_stLocalTime; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
|
TIMESTAMP_STRUCT m_DBTimeStampStruct;
|
|||
|
|
DBTIMESTAMP m_stDbTimeStamp; // <20>ʿ<EFBFBD><CABF><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD> <20>ӽú<D3BD><C3BA><EFBFBD>
|
|||
|
|
DBDATE m_DBDate;
|
|||
|
|
};
|
|||
|
|
|