/*//=============================================================== << TIME SET >> FILE : TIMESET.H, TIMESET.CPP DESC : ½Ã°£ °ü¸® Ŭ·¡½º INIT BUILT DATE : 2007. 04. 22 LAST BUILT DATE : 2008. 05. 29 P.S.> - tm ±¸Á¶Ã¼ ±¸Á¶ int tm_sec : ÃÊ (0 ~ 59) (*) int tm_min : ºÐ 0 ¿¡¼­ 59 ±îÁöÀÇ ¹üÀ§¸¦ °®´Â ºÐ(minute) (*) int tm_hour : ½Ã 0 ¿¡¼­ 23±îÁöÀÇ ¹üÀ§¸¦ °®´Â ½Ã(hours) (*) int tm_mday : ÀÏ (ÇÑ´ÞÁÖ±â, 1 ~ 31) (*) int tm_mon : ¿ù (0 ~ 11) (*) int tm_year : ³â (1900³â ÀÌÈÄ) (*) int tm_wday : ÀÏ (ÇÑÁÖÁÖ±â, 0 ~ 6) int tm_yday : ÀÏ (ÇÑÇØÁÖ±â, 0 ~ 365) int tm_isdst : Àϱ¤ Àý¾à ½Ã°£Á¦ (¼­¸ÓŸÀÓ) Ç÷¡±× P.S.> µ¥ÀÌÅÍ ¸â¹ö ¼³¸í µÚ¿¡ (*) °¡ ºÙ´Â ¸â¹ö¸¸ÀÌ __time32_t, __time64_t ·Î º¯È¯ ½Ã ¿µÇâÀ» ÁÖ°í ³ª¸ÓÁö´Â ¹«°ü - DBTIMESTAMP ±¸Á¶Ã¼ ±¸Á¶ SHORT year : ³â (A.D. ÀÌÈÄ 0 ~ 9999) USHORT month : ¿ù (1 ~ 12) USHORT day : ÀÏ (1 ~ 31) USHORT hour : ½Ã (0 ~ 23) USHORT minute : ºÐ (0 ~ 59) USHORT second : ÃÊ (0 ~ 59) ULONG fraction : Á¤¹Ðµµ (1/10¾ï ÃʱîÁö Á¤¹Ðµµ¸¦ Ç¥Çö, 0 ~ 999,999,999) - __time32_t Á¤¹Ðµµ : 1970-01-01 00:00:00 ~ 2038-01-18 12:14:07 - __time64_t Á¤¹Ðµµ : 1970-01-01 00:00:00 ~ 2999-12-31 23:59:59 Copyright¨Ï 2002~2009 B4nFter (b4nfter@gmail.com) and Co-Writers. All Rights Reserved. *///=============================================================== #pragma once /////////////////////////////////////////////////////////////////// // INCLUDE /////////////////////////////////////////////////////////////////// #include #include #include /////////////////////////////////////////////////////////////////// // DEFINE /////////////////////////////////////////////////////////////////// #define DF_TM_YEAR_EPOCH (1900) // tm ±¸Á¶Ã¼ ³âµµ ±¸ºÐ °ª #define DF_TIME32_MAX (0x7FFFFFFF) // __time32_t µ¥ÀÌÅÍÇüÀÇ ÃÖ´ë°ª #define DF_TIME64_MAX (0x00000007933FF16F) // __time64_t µ¥ÀÌÅÍÇüÀÇ ÃÖ´ë°ª /////////////////////////////////////////////////////////////////// // DECLARATION /////////////////////////////////////////////////////////////////// //*--------------------------------------------------------------- // TYPE : CLASS // NAME : CTimeSet //*--------------------------------------------------------------- // DESC : ½Ã°£ °ü¸® Ŭ·¡½º // PRGM : B4nFter //*--------------------------------------------------------------- class CTimeSet { public: // SYSTEMTIME::wDayOfWeek ÀÇ °ª¼ø¼­¿Í µ¿ÀÏÇØ¾ß ÇÔ 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); // ÃÖ´ëÂ÷ÀÌ : ÁÖ (´ÜÀ§:1/1000ÃÊ) DWORD GetTimeTo(WORD wHour, WORD wMinute, WORD wSecond); // ÃÖ´ëÂ÷ÀÌ : ÀÏ (´ÜÀ§:1/1000ÃÊ) DWORD GetTimeTo(WORD wMinute, WORD wSecond); // ÃÖ´ëÂ÷ÀÌ : ½Ã°£ (´ÜÀ§:1/1000ÃÊ) INT CompareFileTime(const FILETIME& stFileTime1, const FILETIME& stFileTime2); // stFileTime1 ¿Í stFileTime2 Áß ¾î´ÀÂÊÀÌ Å«Áö ºñ±³ (-1:ù¹øÂ°Å­ / 0:°°À½ / 1:µÎ¹øÂ°Å­) 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; // ½ÇÁ¦ ÇöÀç ½Ã°£À» À¯ÁöÇÏ´Â º¯¼ö TIMESTAMP_STRUCT m_DBTimeStampStruct; DBTIMESTAMP m_stDbTimeStamp; // ÇÊ¿äÇÒ ¶§¸¸ »ç¿ëÇÏ´Â Àӽú¯¼ö DBDATE m_DBDate; };