/////////////////////////////////////////////////////////////////// // INCLUDE /////////////////////////////////////////////////////////////////// #include "STDAFX.H" #include "TIMESET.H" #include #include "COMMONMACROS.H" #include "BASESET.H" #include "DEBUGUTIL.H" #include "SAFESTRINGMACROS.H" #if defined(_US) #include #endif // #if defined(_US) #ifdef _DEBUG #define new new(_NORMAL_BLOCK,__FILE__,__LINE__) #endif /////////////////////////////////////////////////////////////////// // IMPLEMENTATION /////////////////////////////////////////////////////////////////// //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::CTimeSet //*--------------------------------------------------------------- // DESC : »ý¼ºÀÚ // PARM : N/A // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- CTimeSet::CTimeSet() { Reset(); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::CTimeSet //*--------------------------------------------------------------- // DESC : »ý¼ºÀÚ // PARM : N/A // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- CTimeSet::CTimeSet(WORD wYear, WORD wMonth, WORD wDay, WORD wHour, WORD wMinute, WORD wSecond) { Set(wYear, wMonth, wDay, wHour, wMinute,wSecond); } CTimeSet::CTimeSet(const __time32_t& pTime, bool pIsLocal) { Set(pTime, pIsLocal); } CTimeSet::CTimeSet(const __time64_t& pTime, bool pIsLocal) { Set(pTime, pIsLocal); } CTimeSet::CTimeSet(const char* szTime, bool pIsLocal) { char szYear[5] = {0,}; char szMonth[3] = {0,}; char szDay[3] = {0,}; char szHour[3] = {0,}; char szMin[3] = {0,}; int nYear = 0; int nMonth = 0; int nDay = 0; int nHour = 0; int nMin = 0; sscanf_s (szTime, "%4s%2s%2s%2s%2s", szYear, sizeof(szYear), szMonth, sizeof(szMonth), szDay, sizeof(szDay), szHour, sizeof(szHour), szMin, sizeof(szMin)); nYear = atoi (szYear); nMonth = atoi (szMonth); nDay = atoi (szDay); nHour = atoi (szHour); nMin = atoi (szMin); Set (nYear, nMonth, nDay, nHour, nMin, 0); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::CTimeSet //*--------------------------------------------------------------- // DESC : »ý¼ºÀÚ // PARM : N/A // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- CTimeSet::CTimeSet(const FILETIME& stTime) { Set(stTime); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::CTimeSet //*--------------------------------------------------------------- // DESC : »ý¼ºÀÚ // PARM : N/A // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- CTimeSet::CTimeSet(const SYSTEMTIME& stTime) { Set(stTime); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::CTimeSet //*--------------------------------------------------------------- // DESC : »ý¼ºÀÚ // PARM : N/A // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- CTimeSet::CTimeSet(const DBTIMESTAMP& stTime) { Set(stTime); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::Reset //*--------------------------------------------------------------- // DESC : ½Ã°£ °´Ã¼ Á¤º¸¸¦ ¸®¼Â (ÇöÀç½Ã°£À¸·Î ¼¼ÆÃ) // PARM : N/A // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- VOID CTimeSet::Reset() { ::GetLocalTime(&m_stLocalTime); memset(&m_stDbTimeStamp, 0, sizeof(m_stDbTimeStamp)); memset(&m_DBTimeStampStruct, 0, sizeof(m_DBTimeStampStruct)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::Set //*--------------------------------------------------------------- // DESC : ½Ã°£ Á¤º¸¸¦ ¼¼ÆÃ // PARM : 1 . wYear - ³â // 2 . wMonth - ¿ù // 3 . wDay - ÀÏ // 4 . wHour - ½Ã // 5 . wMinute - ºÐ // 6 . wSecond - ÃÊ // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- VOID CTimeSet::Set(WORD wYear, WORD wMonth, WORD wDay, WORD wHour, WORD wMinute,WORD wSecond) { m_stLocalTime.wYear = wYear; m_stLocalTime.wMonth = wMonth; m_stLocalTime.wDay = wDay; m_stLocalTime.wDayOfWeek = 0; m_stLocalTime.wHour = wHour; m_stLocalTime.wMinute = wMinute; m_stLocalTime.wSecond = wSecond; m_stLocalTime.wMilliseconds = 0; } VOID CTimeSet::Set(const __time32_t& pTime, bool pIsLocal) { tm stTm; // ::memset(&stTm, 0, sizeof(stTm)); // ¿µÇâ ¾øÀ½ (Çì´õ ÁÖ¼® ÂüÁ¶ÇÒ °Í) if (pIsLocal) { ConvertTimeT32ToTm_LC(pTime, &stTm); } else { ConvertTimeT32ToTm_GM(pTime, &stTm); } m_stLocalTime.wYear = stTm.tm_year; m_stLocalTime.wMonth = stTm.tm_mon; m_stLocalTime.wDay = stTm.tm_mday; m_stLocalTime.wDayOfWeek = 0; m_stLocalTime.wHour = stTm.tm_hour; m_stLocalTime.wMinute = stTm.tm_min; m_stLocalTime.wSecond = stTm.tm_sec; m_stLocalTime.wMilliseconds = 0; } VOID CTimeSet::Set(const __time64_t& pTime, bool pIsLocal) { tm stTm; // ::memset(&stTm, 0, sizeof(stTm)); // ¿µÇâ ¾øÀ½ (Çì´õ ÁÖ¼® ÂüÁ¶ÇÒ °Í) if (pIsLocal) { ConvertTimeT64ToTm_LC(pTime, &stTm); } else { ConvertTimeT64ToTm_GM(pTime, &stTm); } m_stLocalTime.wYear = stTm.tm_year; m_stLocalTime.wMonth = stTm.tm_mon; m_stLocalTime.wDay = stTm.tm_mday; m_stLocalTime.wDayOfWeek = 0; m_stLocalTime.wHour = stTm.tm_hour; m_stLocalTime.wMinute = stTm.tm_min; m_stLocalTime.wSecond = stTm.tm_sec; m_stLocalTime.wMilliseconds = 0; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::Set //*--------------------------------------------------------------- // DESC : ½Ã°£ Á¤º¸¸¦ ¼¼ÆÃ // PARM : 1 . stTime - FILETIME ½Ã°£Á¤º¸ // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- VOID CTimeSet::Set(const FILETIME& stTime) { FILETIME stFileTime; ::FileTimeToLocalFileTime(&stTime, &stFileTime); ::FileTimeToSystemTime(&stFileTime, &m_stLocalTime); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::Set //*--------------------------------------------------------------- // DESC : ½Ã°£ Á¤º¸¸¦ ¼¼ÆÃ // PARM : 1 . stTime - SYSTEMTIME ½Ã°£Á¤º¸ // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- VOID CTimeSet::Set(const SYSTEMTIME& stTime) { m_stLocalTime = stTime; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::Set //*--------------------------------------------------------------- // DESC : ½Ã°£ Á¤º¸¸¦ ¼¼ÆÃ // PARM : 1 . stTime - DBTIMESTAMP ½Ã°£Á¤º¸ // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- VOID CTimeSet::Set(const DBTIMESTAMP& stTime) { FILETIME stFileTime; ConvertDbTimeStampToFileTime(&stTime, &stFileTime); ::FileTimeToSystemTime(&stFileTime, &m_stLocalTime); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::GetTimeTo //*--------------------------------------------------------------- // DESC : ÇöÀç °´Ã¼¿¡ ÁöÁ¤µÈ ½Ã°£¿¡¼­ ÀÎÀÚ·Î Àü´ÞµÈ ƯÁ¤ ½Ã°£±îÁöÀÇ ³²Àº ÃÊ ¹Ýȯ // PARM : 1 . eDayOfWeek - ÁÖ // 2 . wHour - ½Ã // 3 . wMinute - ºÐ // 4 . wSecond - ÃÊ // RETV : ÀÎÀÚ·Î Àü´ÞµÈ ƯÁ¤ ½Ã°£±îÁöÀÇ ³²Àº ÃÊ // PRGM : B4nFter //*--------------------------------------------------------------- DWORD CTimeSet::GetTimeTo(EF_DAYOFWEEK eDayOfWeek, WORD wHour, WORD wMinute, WORD wSecond) { DN_ASSERT((EV_DAYOFWEEK_SUN <= eDayOfWeek) && (eDayOfWeek <= EV_DAYOFWEEK_SAT), "Invalid!"); DN_ASSERT(wHour < 24, "Invalid!"); DN_ASSERT(wMinute < 60, "Invalid!"); DN_ASSERT(wSecond < 60, "Invalid!"); DWORD dwCurSec = (m_stLocalTime.wSecond) + (m_stLocalTime.wMinute*60) + (m_stLocalTime.wHour*60*60) + (m_stLocalTime.wDayOfWeek*60*60*24); DWORD dwArgSec = (wSecond) + (wMinute*60) + (wHour*60*60) + (eDayOfWeek*60*60*24); if (dwCurSec < dwArgSec) { return((dwArgSec-dwCurSec)*1000); } else if (dwArgSec < dwCurSec) { return((7*24*60*60 - dwCurSec + dwArgSec)*1000); } else { return (0); } } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::GetTimeTo //*--------------------------------------------------------------- // DESC : ÇöÀç °´Ã¼¿¡ ÁöÁ¤µÈ ½Ã°£¿¡¼­ ÀÎÀÚ·Î Àü´ÞµÈ ƯÁ¤ ½Ã°£±îÁöÀÇ ³²Àº ÃÊ ¹Ýȯ // PARM : 1 . wHour - ½Ã // 2 . wMinute - ºÐ // 3 . wSecond - ÃÊ // RETV : ÀÎÀÚ·Î Àü´ÞµÈ ƯÁ¤ ½Ã°£±îÁöÀÇ ³²Àº ÃÊ // PRGM : B4nFter //*--------------------------------------------------------------- DWORD CTimeSet::GetTimeTo(WORD wHour, WORD wMinute, WORD wSecond) { DN_ASSERT(wHour < 24, "Invalid!"); DN_ASSERT(wMinute < 60, "Invalid!"); DN_ASSERT(wSecond < 60, "Invalid!"); DWORD dwCurSec = (m_stLocalTime.wSecond) + (m_stLocalTime.wMinute*60) + (m_stLocalTime.wHour*60*60); DWORD dwArgSec = (wSecond) + (wMinute*60) + (wHour*60*60); if (dwCurSec < dwArgSec) { return((dwArgSec-dwCurSec)*1000); } else if (dwArgSec < dwCurSec) { return((24*60*60 - dwCurSec + dwArgSec)*1000); } else { return (0); } } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::GetTimeTo //*--------------------------------------------------------------- // DESC : ÇöÀç °´Ã¼¿¡ ÁöÁ¤µÈ ½Ã°£¿¡¼­ ÀÎÀÚ·Î Àü´ÞµÈ ƯÁ¤ ½Ã°£±îÁöÀÇ ³²Àº ÃÊ ¹Ýȯ // PARM : 1 . wMinute - ºÐ // 2 . wSecond - ÃÊ // RETV : ÀÎÀÚ·Î Àü´ÞµÈ ƯÁ¤ ½Ã°£±îÁöÀÇ ³²Àº ÃÊ // PRGM : B4nFter //*--------------------------------------------------------------- DWORD CTimeSet::GetTimeTo(WORD wMinute, WORD wSecond) { DN_ASSERT(wMinute < 60, "Invalid!"); DN_ASSERT(wSecond < 60, "Invalid!"); DWORD dwCurSec = (m_stLocalTime.wSecond) + (m_stLocalTime.wMinute*60); DWORD dwArgSec = (wSecond) + (wMinute*60); if (dwCurSec < dwArgSec) { return((dwArgSec-dwCurSec)*1000); } else if (dwArgSec < dwCurSec) { return((60*60 - dwCurSec + dwArgSec)*1000); } else { return (0); } } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::CompareFileTime //*--------------------------------------------------------------- // DESC : µÎ °³ÀÇ FILETIME ½Ã°£ Áß ¾î´ÀÂÊÀÌ Å«Áö ¹Ýȯ // PARM : 1 . stFileTime1 - FILETIME ½Ã°£Á¤º¸ 1 // 2 . stFileTime2 - FILETIME ½Ã°£Á¤º¸ 2 // RETV : -1 : stFileTime1 ÀÌ Å­ / 0 : µÑ ´Ù °°À½ / 1 : stFileTime2 °¡ Å­ // PRGM : B4nFter //*--------------------------------------------------------------- INT CTimeSet::CompareFileTime(const FILETIME& stFileTime1, const FILETIME& stFileTime2) { return(::CompareFileTime(&stFileTime1, &stFileTime2)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::CheckIntegrity //*--------------------------------------------------------------- // DESC : °´Ã¼ÀÇ ÇöÀç ½Ã°£Á¤º¸ÀÇ ¹«°á¼º üũ // PARM : N/A // RETV : TRUE - ¼º°ø / FALSE - ½ÇÆÐ // PRGM : B4nFter //*--------------------------------------------------------------- BOOL CTimeSet::CheckIntegrity() { if (!m_stLocalTime.wMonth || m_stLocalTime.wMonth > 12) { return FALSE; } if (m_stLocalTime.wDayOfWeek > 6) { return FALSE; } if (!m_stLocalTime.wDay || m_stLocalTime.wDay > 31) { return FALSE; } if (m_stLocalTime.wHour > 24) { return FALSE; } if (m_stLocalTime.wMinute > 60) { return FALSE; } if (m_stLocalTime.wSecond > 60) { return FALSE; } if (m_stLocalTime.wMilliseconds > 999) { return FALSE; } return TRUE; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::AddSecond //*--------------------------------------------------------------- // DESC : ÇöÀç °´Ã¼ÀÇ ½Ã°£Á¤º¸¿¡ N Ãʸ¸Å­ ´õÇÔ // PARM : 1 . i64Second - ÃÊ (¡¾) // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- VOID CTimeSet::AddSecond(INT64 i64Second) { DN_ASSERT(0 != i64Second, "Invalid!"); FILETIME stFileTime; ::SystemTimeToFileTime(&m_stLocalTime, &stFileTime); ULARGE_INTEGER uValue; uValue.LowPart = stFileTime.dwLowDateTime; uValue.HighPart = stFileTime.dwHighDateTime; uValue.QuadPart += (i64Second * 10000000); // 100-nano·Î º¯È¯ stFileTime.dwLowDateTime = uValue.LowPart; stFileTime.dwHighDateTime = uValue.HighPart; ::FileTimeToSystemTime(&stFileTime, &m_stLocalTime); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::operator- //*--------------------------------------------------------------- // DESC : ÇöÀç °´Ã¼ÀÇ ½Ã°£Á¤º¸¿¡ ´Ù¸¥ ½Ã°£°´Ã¼ÀÇ ½Ã°£Á¤º¸¸¦ »­ // PARM : 1 . Time - ½Ã°£°´Ã¼ // RETV : ÇöÀç °´Ã¼¿¡¼­ ´Ù¸¥ °´Ã¼ÀÇ ½Ã°£Á¤º¸¸¦ »« °ª (´ÜÀ§:ÃÊ) // PRGM : B4nFter //*--------------------------------------------------------------- INT64 CTimeSet::operator-(const CTimeSet& pTime) const { FILETIME stFileTime; ::SystemTimeToFileTime(&m_stLocalTime, &stFileTime); LARGE_INTEGER lValue1; lValue1.LowPart = stFileTime.dwLowDateTime; lValue1.HighPart = static_cast(stFileTime.dwHighDateTime); ::SystemTimeToFileTime(&pTime.m_stLocalTime, &stFileTime); LARGE_INTEGER lValue2; lValue2.LowPart = stFileTime.dwLowDateTime; lValue2.HighPart = static_cast(stFileTime.dwHighDateTime); lValue1.QuadPart /= 10000000; // 100-nano¸¦ ÃÊ·Î º¯È¯. lValue2.QuadPart /= 10000000; return(static_cast(lValue1.QuadPart - lValue2.QuadPart)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::GetTimeT32_LC //*--------------------------------------------------------------- // DESC : ÇöÀç ½Ã°£Á¤º¸¸¦ __time32_t ½Ã°£Á¤º¸·Î º¯È¯ // PARM : N/A // RETV : __time32_t ½Ã°£Á¤º¸ // PRGM : B4nFter // P.S.> // - _mktime32() À» »ç¿ëÇϸç À̰ÍÀº ÇöÀç ½Ã½ºÅÛÀÇ ´Þ·Â½Ã°£À» ±âÁØÀ¸·Î º¯È¯ // - ´Þ·Â½Ã°£ (Calendar Value) Àº ȯ°æº¯¼ö TZ ÀÇ ¿µÇâÀ» ¹ÞÀ½ (ex> ´ëÇѹα¹ TZ = GMT - 09:00:00) //*--------------------------------------------------------------- __time32_t CTimeSet::GetTimeT32_LC() const { tm stTm; // ::memset(&stTm, 0, sizeof(stTm)); // ¿µÇâ ¾øÀ½ (Çì´õ ÁÖ¼® ÂüÁ¶ÇÒ °Í) stTm.tm_year = m_stLocalTime.wYear - DF_TM_YEAR_EPOCH; stTm.tm_mon = m_stLocalTime.wMonth - 1; stTm.tm_mday = m_stLocalTime.wDay; stTm.tm_hour = m_stLocalTime.wHour; stTm.tm_min = m_stLocalTime.wMinute; stTm.tm_sec = m_stLocalTime.wSecond; #if defined(_US) _timeb summertime; _ftime(&summertime); stTm.tm_isdst = summertime.dstflag; #else stTm.tm_isdst = 0; // Seriously, i don't know. #endif return(::_mktime32(&stTm)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::GetTimeT64_LC //*--------------------------------------------------------------- // DESC : ÇöÀç ½Ã°£Á¤º¸¸¦ __time64_t ½Ã°£Á¤º¸·Î º¯È¯ // PARM : N/A // RETV : __time64_t ½Ã°£Á¤º¸ // PRGM : B4nFter // P.S.> // - _mktime64() À» »ç¿ëÇϸç À̰ÍÀº ÇöÀç ½Ã½ºÅÛÀÇ ´Þ·Â½Ã°£À» ±âÁØÀ¸·Î º¯È¯ // - ´Þ·Â½Ã°£ (Calendar Value) Àº ȯ°æº¯¼ö TZ ÀÇ ¿µÇâÀ» ¹ÞÀ½ (ex> ´ëÇѹα¹ TZ = GMT - 09:00:00) //*--------------------------------------------------------------- __time64_t CTimeSet::GetTimeT64_LC() const { tm stTm; // ::memset(&stTm, 0, sizeof(stTm)); // ¿µÇâ ¾øÀ½ (Çì´õ ÁÖ¼® ÂüÁ¶ÇÒ °Í) stTm.tm_year = m_stLocalTime.wYear - DF_TM_YEAR_EPOCH; stTm.tm_mon = m_stLocalTime.wMonth - 1; stTm.tm_mday = m_stLocalTime.wDay; stTm.tm_hour = m_stLocalTime.wHour; stTm.tm_min = m_stLocalTime.wMinute; stTm.tm_sec = m_stLocalTime.wSecond; #if defined(_US) __timeb64 summertime; _ftime64(&summertime); stTm.tm_isdst = summertime.dstflag; #else stTm.tm_isdst = 0; // Seriously, i don't know. #endif return(::_mktime64(&stTm)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::GetTimeT32_GM //*--------------------------------------------------------------- // DESC : ÇöÀç ½Ã°£Á¤º¸¸¦ __time32_t ½Ã°£Á¤º¸·Î º¯È¯ // PARM : N/A // RETV : __time32_t ½Ã°£Á¤º¸ // PRGM : B4nFter // P.S.> // - _mkgmtime32() À» »ç¿ëÇϸç À̰ÍÀº GMT ±âÁØÀ¸·Î º¯È¯ // - GMT (Greenwich Mean Time) Àº ¿µ±¹ ±×¸®´ÏÄ¡ õ¹®´ë ±âÁØÀÇ ¼¼°è Ç¥Áؽà (½Ã°£°ü·Ã C ·±Å¸ÀÓ ¶óÀ̺귯¸®¿¡¼­´Â UTC (Coodinated Universal Time, ÇùÁ¤ ¼¼°è½Ã) ¿Í »ç½Ç»ó °°Àº Àǹ̷Π»ç¿ëµÊ) //*--------------------------------------------------------------- __time32_t CTimeSet::GetTimeT32_GM() const { tm stTm; // ::memset(&stTm, 0, sizeof(stTm)); // ¿µÇâ ¾øÀ½ (Çì´õ ÁÖ¼® ÂüÁ¶ÇÒ °Í) stTm.tm_year = m_stLocalTime.wYear - DF_TM_YEAR_EPOCH; stTm.tm_mon = m_stLocalTime.wMonth - 1; stTm.tm_mday = m_stLocalTime.wDay; stTm.tm_hour = m_stLocalTime.wHour; stTm.tm_min = m_stLocalTime.wMinute; stTm.tm_sec = m_stLocalTime.wSecond; return(::_mkgmtime32(&stTm)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::GetTimeT64_GM //*--------------------------------------------------------------- // DESC : ÇöÀç ½Ã°£Á¤º¸¸¦ __time64_t ½Ã°£Á¤º¸·Î º¯È¯ // PARM : N/A // RETV : __time64_t ½Ã°£Á¤º¸ // PRGM : B4nFter // P.S.> // - _mkgmtime64() À» »ç¿ëÇϸç À̰ÍÀº GMT ±âÁØÀ¸·Î º¯È¯ // - GMT (Greenwich Mean Time) Àº ¿µ±¹ ±×¸®´ÏÄ¡ õ¹®´ë ±âÁØÀÇ ¼¼°è Ç¥Áؽà (½Ã°£°ü·Ã C ·±Å¸ÀÓ ¶óÀ̺귯¸®¿¡¼­´Â UTC (Coodinated Universal Time, ÇùÁ¤ ¼¼°è½Ã) ¿Í »ç½Ç»ó °°Àº Àǹ̷Π»ç¿ëµÊ) //*--------------------------------------------------------------- __time64_t CTimeSet::GetTimeT64_GM() const { tm stTm; // ::memset(&stTm, 0, sizeof(stTm)); // ¿µÇâ ¾øÀ½ (Çì´õ ÁÖ¼® ÂüÁ¶ÇÒ °Í) stTm.tm_year = m_stLocalTime.wYear - DF_TM_YEAR_EPOCH; stTm.tm_mon = m_stLocalTime.wMonth - 1; stTm.tm_mday = m_stLocalTime.wDay; stTm.tm_hour = m_stLocalTime.wHour; stTm.tm_min = m_stLocalTime.wMinute; stTm.tm_sec = m_stLocalTime.wSecond; return(::_mkgmtime64(&stTm)); } TIMESTAMP_STRUCT& CTimeSet::GetDBTimeStampStruct() { m_DBTimeStampStruct.year = m_stLocalTime.wYear; m_DBTimeStampStruct.month = m_stLocalTime.wMonth; m_DBTimeStampStruct.day = m_stLocalTime.wDay; m_DBTimeStampStruct.hour = m_stLocalTime.wHour; m_DBTimeStampStruct.minute = m_stLocalTime.wMinute; m_DBTimeStampStruct.second = m_stLocalTime.wSecond; m_DBTimeStampStruct.fraction = static_cast(m_stLocalTime.wMilliseconds*1000000); return m_DBTimeStampStruct; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::GetDbTimeStamp //*--------------------------------------------------------------- // DESC : ÇöÀç °´Ã¼¿¡ ÁöÁ¤µÈ ½Ã°£Á¤º¸¸¦ DBTIMESTAMP ÇüÅ·Π¹Ýȯ // PARM : N/A // RETV : DBTIMESTAMP ½Ã°£Á¤º¸ // PRGM : B4nFter //*--------------------------------------------------------------- DBTIMESTAMP& CTimeSet::GetDbTimeStamp() { m_stDbTimeStamp.year = m_stLocalTime.wYear; m_stDbTimeStamp.month = m_stLocalTime.wMonth; m_stDbTimeStamp.day = m_stLocalTime.wDay; m_stDbTimeStamp.hour = m_stLocalTime.wHour; m_stDbTimeStamp.minute = m_stLocalTime.wMinute; m_stDbTimeStamp.second = m_stLocalTime.wSecond; m_stDbTimeStamp.fraction = static_cast(m_stLocalTime.wMilliseconds*1000000); return m_stDbTimeStamp; } DBDATE& CTimeSet::GetDBDate() { m_DBDate.year = m_stLocalTime.wYear; m_DBDate.month = m_stLocalTime.wMonth; m_DBDate.day = m_stLocalTime.wDay; return m_DBDate; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertFileTimeToDbTimeStamp //*--------------------------------------------------------------- // DESC : ƯÁ¤ FILETIME ½Ã°£Á¤º¸¸¦ DBTIMESTAMP ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . lpFileTime - ½Ã°£Á¤º¸ // 2 . lpDbTime - DBTIMESTAMP ½Ã°£Á¤º¸ Ãâ·Â¹öÆÛ // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- VOID CTimeSet::ConvertFileTimeToDbTimeStamp(const FILETIME* lpFileTime, DBTIMESTAMP* lpDbTime) { DN_ASSERT(NULL != lpFileTime, "Invalid!"); DN_ASSERT(NULL != lpDbTime, "Invalid!"); SYSTEMTIME stSystemTime; ::FileTimeToSystemTime(lpFileTime, &stSystemTime); lpDbTime->year = stSystemTime.wYear; lpDbTime->month = stSystemTime.wMonth; lpDbTime->day = stSystemTime.wDay; lpDbTime->hour = stSystemTime.wHour; lpDbTime->minute = stSystemTime.wMinute; lpDbTime->second = stSystemTime.wSecond; lpDbTime->fraction = static_cast(stSystemTime.wMilliseconds * 1000000); if (lpDbTime->year < 1900) { lpDbTime->year = 1900; } } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertDbTimeStampToFileTime //*--------------------------------------------------------------- // DESC : ƯÁ¤ DBTIMESTAMP ½Ã°£Á¤º¸¸¦ FILETIME ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . lpDbTime - DBTIMESTAMP ½Ã°£Á¤º¸ // 2 . lpFileTime - FILETIME ½Ã°£Á¤º¸ Ãâ·Â¹öÆÛ // RETV : N/A // PRGM : B4nFter //*--------------------------------------------------------------- VOID CTimeSet::ConvertDbTimeStampToFileTime(const DBTIMESTAMP* lpDbTime, FILETIME* lpFileTime) { DN_ASSERT(NULL != lpDbTime, "Invalid!"); DN_ASSERT(NULL != lpFileTime, "Invalid!"); SYSTEMTIME stSystemTime; // ::memset(&stSystemTime, 0, sizeof(stSystemTime)); // ¾Æ·¡ ¸ðµç ¸â¹ö¸¦ ¼¼ÆÃÇϰí ÀÖÀ½ stSystemTime.wDayOfWeek = 0; stSystemTime.wYear = lpDbTime->year; stSystemTime.wMonth = lpDbTime->month; stSystemTime.wDay = lpDbTime->day; stSystemTime.wHour = lpDbTime->hour; stSystemTime.wMinute = lpDbTime->minute; stSystemTime.wSecond = lpDbTime->second; stSystemTime.wMilliseconds = static_cast(lpDbTime->fraction / 1000000); ::SystemTimeToFileTime(&stSystemTime, lpFileTime); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertTmToTimeT32_LC //*--------------------------------------------------------------- // DESC : ƯÁ¤ tm ½Ã°£Á¤º¸¸¦ __time32_t ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . lpTm - tm ½Ã°£Á¤º¸ // RETV : __time32_t ½Ã°£Á¤º¸ // PRGM : B4nFter // P.S.> // - _mktime32() À» »ç¿ëÇϸç À̰ÍÀº ÇöÀç ½Ã½ºÅÛÀÇ ´Þ·Â½Ã°£À» ±âÁØÀ¸·Î º¯È¯ // - ´Þ·Â½Ã°£ (Calendar Value) Àº ȯ°æº¯¼ö TZ ÀÇ ¿µÇâÀ» ¹ÞÀ½ (ex> ´ëÇѹα¹ TZ = GMT - 09:00:00) //*--------------------------------------------------------------- __time32_t CTimeSet::ConvertTmToTimeT32_LC(tm* lpTm) { DN_ASSERT(NULL != lpTm, "Invalid!"); return(::_mktime32(lpTm)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertTmToTimeT64_LC //*--------------------------------------------------------------- // DESC : ƯÁ¤ tm ½Ã°£Á¤º¸¸¦ __time64_t ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . lpTm - tm ½Ã°£Á¤º¸ // RETV : __time64_t ½Ã°£Á¤º¸ // PRGM : B4nFter // P.S.> // - _mktime64() À» »ç¿ëÇϸç À̰ÍÀº ÇöÀç ½Ã½ºÅÛÀÇ ´Þ·Â½Ã°£À» ±âÁØÀ¸·Î º¯È¯ // - ´Þ·Â½Ã°£ (Calendar Value) Àº ȯ°æº¯¼ö TZ ÀÇ ¿µÇâÀ» ¹ÞÀ½ (ex> ´ëÇѹα¹ TZ = GMT - 09:00:00) //*--------------------------------------------------------------- __time64_t CTimeSet::ConvertTmToTimeT64_LC(tm* lpTm) { DN_ASSERT(NULL != lpTm, "Invalid!"); return(::_mktime64(lpTm)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertTmToTimeT32_GM //*--------------------------------------------------------------- // DESC : ƯÁ¤ tm ½Ã°£Á¤º¸¸¦ __time32_t ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . lpTm - tm ½Ã°£Á¤º¸ // RETV : __time32_t ½Ã°£Á¤º¸ // PRGM : B4nFter // P.S.> // - _mkgmtime32() À» »ç¿ëÇϸç À̰ÍÀº GMT ±âÁØÀ¸·Î º¯È¯ // - GMT (Greenwich Mean Time) Àº ¿µ±¹ ±×¸®´ÏÄ¡ õ¹®´ë ±âÁØÀÇ ¼¼°è Ç¥Áؽà (½Ã°£°ü·Ã C ·±Å¸ÀÓ ¶óÀ̺귯¸®¿¡¼­´Â UTC (Coodinated Universal Time, ÇùÁ¤ ¼¼°è½Ã) ¿Í »ç½Ç»ó °°Àº Àǹ̷Π»ç¿ëµÊ) //*--------------------------------------------------------------- __time32_t CTimeSet::ConvertTmToTimeT32_GM(tm* lpTm) { DN_ASSERT(NULL != lpTm, "Invalid!"); return(::_mkgmtime32(lpTm)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertTmToTimeT64_GM //*--------------------------------------------------------------- // DESC : ƯÁ¤ tm ½Ã°£Á¤º¸¸¦ __time64_t ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . lpTm - tm ½Ã°£Á¤º¸ // RETV : __time64_t ½Ã°£Á¤º¸ // PRGM : B4nFter // P.S.> // - _mkgmtime64() À» »ç¿ëÇϸç À̰ÍÀº GMT ±âÁØÀ¸·Î º¯È¯ // - GMT (Greenwich Mean Time) Àº ¿µ±¹ ±×¸®´ÏÄ¡ õ¹®´ë ±âÁØÀÇ ¼¼°è Ç¥Áؽà (½Ã°£°ü·Ã C ·±Å¸ÀÓ ¶óÀ̺귯¸®¿¡¼­´Â UTC (Coodinated Universal Time, ÇùÁ¤ ¼¼°è½Ã) ¿Í »ç½Ç»ó °°Àº Àǹ̷Π»ç¿ëµÊ) //*--------------------------------------------------------------- __time64_t CTimeSet::ConvertTmToTimeT64_GM(tm* lpTm) { DN_ASSERT(NULL != lpTm, "Invalid!"); return(::_mkgmtime64(lpTm)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertDbTimeStampToTimeT32_LC //*--------------------------------------------------------------- // DESC : ƯÁ¤ DBTIMESTAMP ½Ã°£Á¤º¸¸¦ __time32_t ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . lpDbTime - DBTIMESTAMP ½Ã°£Á¤º¸ // RETV : __time32_t ½Ã°£Á¤º¸ // PRGM : B4nFter // P.S.> // - _mktime32() À» »ç¿ëÇϸç À̰ÍÀº ÇöÀç ½Ã½ºÅÛÀÇ ´Þ·Â½Ã°£À» ±âÁØÀ¸·Î º¯È¯ // - ´Þ·Â½Ã°£ (Calendar Value) Àº ȯ°æº¯¼ö TZ ÀÇ ¿µÇâÀ» ¹ÞÀ½ (ex> ´ëÇѹα¹ TZ = GMT - 09:00:00) //*--------------------------------------------------------------- __time32_t CTimeSet::ConvertDbTimeStampToTimeT32_LC(const DBTIMESTAMP*lpDbTime) { DN_ASSERT(NULL != lpDbTime, "Invalid!"); tm stTm; // ::memset(&stTm, 0, sizeof(stTm)); // ¿µÇâ ¾øÀ½ (Çì´õ ÁÖ¼® ÂüÁ¶ÇÒ °Í) stTm.tm_year = lpDbTime->year - DF_TM_YEAR_EPOCH; stTm.tm_mon = lpDbTime->month - 1; stTm.tm_mday = lpDbTime->day; stTm.tm_hour = lpDbTime->hour; stTm.tm_min = lpDbTime->minute; stTm.tm_sec = lpDbTime->second; #if defined(_US) _timeb summertime; _ftime(&summertime); stTm.tm_isdst = summertime.dstflag; #else stTm.tm_isdst = 0; // Seriously, i don't know. #endif return(::_mktime32(&stTm)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertDbTimeStampToTimeT64_LC //*--------------------------------------------------------------- // DESC : ƯÁ¤ DBTIMESTAMP ½Ã°£Á¤º¸¸¦ __time64_t ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . lpDbTime - DBTIMESTAMP ½Ã°£Á¤º¸ // RETV : __time64_t ½Ã°£Á¤º¸ // PRGM : B4nFter // P.S.> // - _mktime64() À» »ç¿ëÇϸç À̰ÍÀº ÇöÀç ½Ã½ºÅÛÀÇ ´Þ·Â½Ã°£À» ±âÁØÀ¸·Î º¯È¯ // - ´Þ·Â½Ã°£ (Calendar Value) Àº ȯ°æº¯¼ö TZ ÀÇ ¿µÇâÀ» ¹ÞÀ½ (ex> ´ëÇѹα¹ TZ = GMT - 09:00:00) //*--------------------------------------------------------------- __time64_t CTimeSet::ConvertDbTimeStampToTimeT64_LC(const DBTIMESTAMP* lpDbTime) { DN_ASSERT(NULL != lpDbTime, "Invalid!"); tm stTm; // ::memset(&stTm, 0, sizeof(stTm)); // ¿µÇâ ¾øÀ½ (Çì´õ ÁÖ¼® ÂüÁ¶ÇÒ °Í) stTm.tm_year = lpDbTime->year - DF_TM_YEAR_EPOCH; stTm.tm_mon = lpDbTime->month - 1; stTm.tm_mday = lpDbTime->day; stTm.tm_hour = lpDbTime->hour; stTm.tm_min = lpDbTime->minute; stTm.tm_sec = lpDbTime->second; #if defined(_US) __timeb64 summertime; _ftime64(&summertime); stTm.tm_isdst = summertime.dstflag; #else stTm.tm_isdst = 0; // Seriously, i don't know. #endif return(::_mktime64(&stTm)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertDbTimeStampToTimeT32_GM //*--------------------------------------------------------------- // DESC : ƯÁ¤ DBTIMESTAMP ½Ã°£Á¤º¸¸¦ __time32_t ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . lpDbTime - DBTIMESTAMP ½Ã°£Á¤º¸ // RETV : __time32_t ½Ã°£Á¤º¸ // PRGM : B4nFter // P.S.> // - _mkgmtime32() À» »ç¿ëÇϸç À̰ÍÀº GMT ±âÁØÀ¸·Î º¯È¯ // - GMT (Greenwich Mean Time) Àº ¿µ±¹ ±×¸®´ÏÄ¡ õ¹®´ë ±âÁØÀÇ ¼¼°è Ç¥Áؽà (½Ã°£°ü·Ã C ·±Å¸ÀÓ ¶óÀ̺귯¸®¿¡¼­´Â UTC (Coodinated Universal Time, ÇùÁ¤ ¼¼°è½Ã) ¿Í »ç½Ç»ó °°Àº Àǹ̷Π»ç¿ëµÊ) //*--------------------------------------------------------------- __time32_t CTimeSet::ConvertDbTimeStampToTimeT32_GM(const DBTIMESTAMP*lpDbTime) { DN_ASSERT(NULL != lpDbTime, "Invalid!"); tm stTm; // ::memset(&stTm, 0, sizeof(stTm)); // ¿µÇâ ¾øÀ½ (Çì´õ ÁÖ¼® ÂüÁ¶ÇÒ °Í) stTm.tm_year = lpDbTime->year - DF_TM_YEAR_EPOCH; stTm.tm_mon = lpDbTime->month - 1; stTm.tm_mday = lpDbTime->day; stTm.tm_hour = lpDbTime->hour; stTm.tm_min = lpDbTime->minute; stTm.tm_sec = lpDbTime->second; return(::_mkgmtime32(&stTm)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertDbTimeStampToTimeT64_GM //*--------------------------------------------------------------- // DESC : ƯÁ¤ DBTIMESTAMP ½Ã°£Á¤º¸¸¦ __time64_t ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . lpDbTime - DBTIMESTAMP ½Ã°£Á¤º¸ // RETV : __time64_t ½Ã°£Á¤º¸ // PRGM : B4nFter // P.S.> // - _mkgmtime64() À» »ç¿ëÇϸç À̰ÍÀº GMT ±âÁØÀ¸·Î º¯È¯ // - GMT (Greenwich Mean Time) Àº ¿µ±¹ ±×¸®´ÏÄ¡ õ¹®´ë ±âÁØÀÇ ¼¼°è Ç¥Áؽà (½Ã°£°ü·Ã C ·±Å¸ÀÓ ¶óÀ̺귯¸®¿¡¼­´Â UTC (Coodinated Universal Time, ÇùÁ¤ ¼¼°è½Ã) ¿Í »ç½Ç»ó °°Àº Àǹ̷Π»ç¿ëµÊ) //*--------------------------------------------------------------- __time64_t CTimeSet::ConvertDbTimeStampToTimeT64_GM(const DBTIMESTAMP* lpDbTime) { DN_ASSERT(NULL != lpDbTime, "Invalid!"); tm stTm; // ::memset(&stTm, 0, sizeof(stTm)); // ¿µÇâ ¾øÀ½ (Çì´õ ÁÖ¼® ÂüÁ¶ÇÒ °Í) stTm.tm_year = lpDbTime->year - DF_TM_YEAR_EPOCH; stTm.tm_mon = lpDbTime->month - 1; stTm.tm_mday = lpDbTime->day; stTm.tm_hour = lpDbTime->hour; stTm.tm_min = lpDbTime->minute; stTm.tm_sec = lpDbTime->second; return(::_mkgmtime64(&stTm)); } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertTimeT32ToTm_LC //*--------------------------------------------------------------- // DESC : ƯÁ¤ __time32_t ½Ã°£Á¤º¸¸¦ tm ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . pTimeT32 - __time32_t ½Ã°£Á¤º¸ // 2 . lpTm - tm ½Ã°£Á¤º¸ Ãâ·Â¹öÆÛ // RETV : TRUE - ¼º°ø / FALSE - ½ÇÆÐ // PRGM : B4nFter // P.S.> // - _localtime32_s() À» »ç¿ëÇϸç À̰ÍÀº ÇöÀç ½Ã½ºÅÛÀÇ ´Þ·Â½Ã°£À» ±âÁØÀ¸·Î º¯È¯ // - ´Þ·Â½Ã°£ (Calendar Value) Àº ȯ°æº¯¼ö TZ ÀÇ ¿µÇâÀ» ¹ÞÀ½ (ex> ´ëÇѹα¹ TZ = GMT - 09:00:00) //*--------------------------------------------------------------- BOOL CTimeSet::ConvertTimeT32ToTm_LC(__time32_t pTimeT32, tm* lpTm) { DN_ASSERT(NULL != lpTm, "Invalid!"); errno_t aRetVal = ::_localtime32_s(lpTm, &pTimeT32); if (aRetVal) { return FALSE; } lpTm->tm_year += DF_TM_YEAR_EPOCH; lpTm->tm_mon += 1; return TRUE; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertTimeT64ToTm_LC //*--------------------------------------------------------------- // DESC : ƯÁ¤ __time64_t ½Ã°£Á¤º¸¸¦ tm ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . pTimeT64 - __time64_t ½Ã°£Á¤º¸ // 2 . lpTm - tm ½Ã°£Á¤º¸ Ãâ·Â¹öÆÛ // RETV : TRUE - ¼º°ø / FALSE - ½ÇÆÐ // PRGM : B4nFter // P.S.> // - _localtime64_s() À» »ç¿ëÇϸç À̰ÍÀº ÇöÀç ½Ã½ºÅÛÀÇ ´Þ·Â½Ã°£À» ±âÁØÀ¸·Î º¯È¯ // - ´Þ·Â½Ã°£ (Calendar Value) Àº ȯ°æº¯¼ö TZ ÀÇ ¿µÇâÀ» ¹ÞÀ½ (ex> ´ëÇѹα¹ TZ = GMT - 09:00:00) //*--------------------------------------------------------------- BOOL CTimeSet::ConvertTimeT64ToTm_LC(__time64_t pTimeT64, tm* lpTm) { DN_ASSERT(NULL != lpTm, "Invalid!"); errno_t aRetVal = ::_localtime64_s(lpTm, &pTimeT64); if (aRetVal) { return FALSE; } lpTm->tm_year += DF_TM_YEAR_EPOCH; lpTm->tm_mon += 1; return TRUE; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertTimeT32ToTm_GM //*--------------------------------------------------------------- // DESC : ƯÁ¤ __time32_t ½Ã°£Á¤º¸¸¦ tm ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . pTimeT32 - __time32_t ½Ã°£Á¤º¸ // 2 . lpTm - tm ½Ã°£Á¤º¸ Ãâ·Â¹öÆÛ // RETV : TRUE - ¼º°ø / FALSE - ½ÇÆÐ // PRGM : B4nFter // P.S.> // - _gmtime32_s() À» »ç¿ëÇϸç À̰ÍÀº GMT ±âÁØÀ¸·Î º¯È¯ // - GMT (Greenwich Mean Time) Àº ¿µ±¹ ±×¸®´ÏÄ¡ õ¹®´ë ±âÁØÀÇ ¼¼°è Ç¥Áؽà (½Ã°£°ü·Ã C ·±Å¸ÀÓ ¶óÀ̺귯¸®¿¡¼­´Â UTC (Coodinated Universal Time, ÇùÁ¤ ¼¼°è½Ã) ¿Í »ç½Ç»ó °°Àº Àǹ̷Π»ç¿ëµÊ) //*--------------------------------------------------------------- BOOL CTimeSet::ConvertTimeT32ToTm_GM(__time32_t pTimeT32, tm* lpTm) { DN_ASSERT(NULL != lpTm, "Invalid!"); errno_t aRetVal = ::_gmtime32_s(lpTm, &pTimeT32); if (aRetVal) { return FALSE; } lpTm->tm_year += DF_TM_YEAR_EPOCH; lpTm->tm_mon += 1; return TRUE; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertTimeT64ToTm_GM //*--------------------------------------------------------------- // DESC : ƯÁ¤ __time64_t ½Ã°£Á¤º¸¸¦ tm ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . pTimeT64 - __time64_t ½Ã°£Á¤º¸ // 2 . lpTm - tm ½Ã°£Á¤º¸ Ãâ·Â¹öÆÛ // RETV : TRUE - ¼º°ø / FALSE - ½ÇÆÐ // PRGM : B4nFter // P.S.> // - _gmtime32_s() À» »ç¿ëÇϸç À̰ÍÀº GMT ±âÁØÀ¸·Î º¯È¯ // - GMT (Greenwich Mean Time) Àº ¿µ±¹ ±×¸®´ÏÄ¡ õ¹®´ë ±âÁØÀÇ ¼¼°è Ç¥Áؽà (½Ã°£°ü·Ã C ·±Å¸ÀÓ ¶óÀ̺귯¸®¿¡¼­´Â UTC (Coodinated Universal Time, ÇùÁ¤ ¼¼°è½Ã) ¿Í »ç½Ç»ó °°Àº Àǹ̷Π»ç¿ëµÊ) //*--------------------------------------------------------------- BOOL CTimeSet::ConvertTimeT64ToTm_GM(__time64_t pTimeT64, tm* lpTm) { DN_ASSERT(NULL != lpTm, "Invalid!"); errno_t aRetVal = ::_gmtime64_s(lpTm, &pTimeT64); if (aRetVal) { return FALSE; } lpTm->tm_year += DF_TM_YEAR_EPOCH; lpTm->tm_mon += 1; return TRUE; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertTimeT32ToDbTimeStamp_LC //*--------------------------------------------------------------- // DESC : ƯÁ¤ __time32_t ½Ã°£Á¤º¸¸¦ DBTIMESTAMP ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . pTimeT32 - __time32_t ½Ã°£Á¤º¸ // 2 . lpDbTime - DBTIMESTAMP ½Ã°£Á¤º¸ Ãâ·Â¹öÆÛ // RETV : TRUE - ¼º°ø / FALSE - ½ÇÆÐ // PRGM : B4nFter // P.S.> // - _localtime32_s() À» »ç¿ëÇϸç À̰ÍÀº ÇöÀç ½Ã½ºÅÛÀÇ ´Þ·Â½Ã°£À» ±âÁØÀ¸·Î º¯È¯ // - ´Þ·Â½Ã°£ (Calendar Value) Àº ȯ°æº¯¼ö TZ ÀÇ ¿µÇâÀ» ¹ÞÀ½ (ex> ´ëÇѹα¹ TZ = GMT - 09:00:00) //*--------------------------------------------------------------- BOOL CTimeSet::ConvertTimeT32ToDbTimeStamp_LC(__time32_t pTimeT32, DBTIMESTAMP* lpDbTime) { DN_ASSERT(NULL != lpDbTime, "Invalid!"); tm stTm; errno_t aRetVal = ::_localtime32_s(&stTm, &pTimeT32); if (aRetVal) { return FALSE; } lpDbTime->year = static_cast(stTm.tm_year + DF_TM_YEAR_EPOCH); lpDbTime->month = static_cast(stTm.tm_mon + 1); lpDbTime->day = static_cast(stTm.tm_mday); lpDbTime->hour = static_cast(stTm.tm_hour); lpDbTime->minute = static_cast(stTm.tm_min); lpDbTime->second = static_cast(stTm.tm_sec); lpDbTime->fraction = 0; return TRUE; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertTimeT64ToDbTimeStamp_LC //*--------------------------------------------------------------- // DESC : ƯÁ¤ __time64_t ½Ã°£Á¤º¸¸¦ DBTIMESTAMP ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . pTimeT64 - __time64_t ½Ã°£Á¤º¸ // 2 . lpDbTime - DBTIMESTAMP ½Ã°£Á¤º¸ Ãâ·Â¹öÆÛ // RETV : TRUE - ¼º°ø / FALSE - ½ÇÆÐ // PRGM : B4nFter // P.S.> // - _localtime64_s() À» »ç¿ëÇϸç À̰ÍÀº ÇöÀç ½Ã½ºÅÛÀÇ ´Þ·Â½Ã°£À» ±âÁØÀ¸·Î º¯È¯ // - ´Þ·Â½Ã°£ (Calendar Value) Àº ȯ°æº¯¼ö TZ ÀÇ ¿µÇâÀ» ¹ÞÀ½ (ex> ´ëÇѹα¹ TZ = GMT - 09:00:00) //*--------------------------------------------------------------- BOOL CTimeSet::ConvertTimeT64ToDbTimeStamp_LC(__time64_t pTimeT64, DBTIMESTAMP* lpDbTime) { DN_ASSERT(NULL != lpDbTime, "Invalid!"); tm stTm; errno_t aRetVal = ::_localtime64_s(&stTm, &pTimeT64); if (aRetVal) { return FALSE; } lpDbTime->year = static_cast(stTm.tm_year + DF_TM_YEAR_EPOCH); lpDbTime->month = static_cast(stTm.tm_mon + 1); lpDbTime->day = static_cast(stTm.tm_mday); lpDbTime->hour = static_cast(stTm.tm_hour); lpDbTime->minute = static_cast(stTm.tm_min); lpDbTime->second = static_cast(stTm.tm_sec); lpDbTime->fraction = 0; return TRUE; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertTimeT32ToDbTimeStamp_GM //*--------------------------------------------------------------- // DESC : ƯÁ¤ __time32_t ½Ã°£Á¤º¸¸¦ DBTIMESTAMP ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . pTimeT32 - __time32_t ½Ã°£Á¤º¸ // 2 . lpDbTime - DBTIMESTAMP ½Ã°£Á¤º¸ Ãâ·Â¹öÆÛ // RETV : TRUE - ¼º°ø / FALSE - ½ÇÆÐ // PRGM : B4nFter // P.S.> // - _gmtime32_s() À» »ç¿ëÇϸç À̰ÍÀº GMT ±âÁØÀ¸·Î º¯È¯ // - GMT (Greenwich Mean Time) Àº ¿µ±¹ ±×¸®´ÏÄ¡ õ¹®´ë ±âÁØÀÇ ¼¼°è Ç¥Áؽà (½Ã°£°ü·Ã C ·±Å¸ÀÓ ¶óÀ̺귯¸®¿¡¼­´Â UTC (Coodinated Universal Time, ÇùÁ¤ ¼¼°è½Ã) ¿Í »ç½Ç»ó °°Àº Àǹ̷Π»ç¿ëµÊ) //*--------------------------------------------------------------- BOOL CTimeSet::ConvertTimeT32ToDbTimeStamp_GM(__time32_t pTimeT32, DBTIMESTAMP* lpDbTime) { DN_ASSERT(NULL != lpDbTime, "Invalid!"); tm stTm; errno_t aRetVal = ::_gmtime32_s(&stTm, &pTimeT32); if (aRetVal) { return FALSE; } lpDbTime->year = static_cast(stTm.tm_year + DF_TM_YEAR_EPOCH); lpDbTime->month = static_cast(stTm.tm_mon + 1); lpDbTime->day = static_cast(stTm.tm_mday); lpDbTime->hour = static_cast(stTm.tm_hour); lpDbTime->minute = static_cast(stTm.tm_min); lpDbTime->second = static_cast(stTm.tm_sec); lpDbTime->fraction = 0; return TRUE; } //*--------------------------------------------------------------- // TYPE : FUNCTION // NAME : CTimeSet::ConvertTimeT64ToDbTimeStamp_GM //*--------------------------------------------------------------- // DESC : ƯÁ¤ __time64_t ½Ã°£Á¤º¸¸¦ DBTIMESTAMP ½Ã°£Á¤º¸·Î º¯È¯ // PARM : 1 . pTimeT64 - __time64_t ½Ã°£Á¤º¸ // 2 . lpDbTime - DBTIMESTAMP ½Ã°£Á¤º¸ Ãâ·Â¹öÆÛ // RETV : TRUE - ¼º°ø / FALSE - ½ÇÆÐ // PRGM : B4nFter // P.S.> // - _gmtime32_s() À» »ç¿ëÇϸç À̰ÍÀº GMT ±âÁØÀ¸·Î º¯È¯ // - GMT (Greenwich Mean Time) Àº ¿µ±¹ ±×¸®´ÏÄ¡ õ¹®´ë ±âÁØÀÇ ¼¼°è Ç¥Áؽà (½Ã°£°ü·Ã C ·±Å¸ÀÓ ¶óÀ̺귯¸®¿¡¼­´Â UTC (Coodinated Universal Time, ÇùÁ¤ ¼¼°è½Ã) ¿Í »ç½Ç»ó °°Àº Àǹ̷Π»ç¿ëµÊ) //*--------------------------------------------------------------- BOOL CTimeSet::ConvertTimeT64ToDbTimeStamp_GM(__time64_t pTimeT64, DBTIMESTAMP* lpDbTime) { DN_ASSERT(NULL != lpDbTime, "Invalid!"); tm stTm; errno_t aRetVal = ::_gmtime64_s(&stTm, &pTimeT64); if (aRetVal) { return FALSE; } lpDbTime->year = static_cast(stTm.tm_year + DF_TM_YEAR_EPOCH); lpDbTime->month = static_cast(stTm.tm_mon + 1); lpDbTime->day = static_cast(stTm.tm_mday); lpDbTime->hour = static_cast(stTm.tm_hour); lpDbTime->minute = static_cast(stTm.tm_min); lpDbTime->second = static_cast(stTm.tm_sec); lpDbTime->fraction = 0; return TRUE; } CTimeSet::EF_DAYOFWEEK CTimeSet::CalculateDayOfWeek() // 20100728 { return(CTimeSet::CalculateDayOfWeek(m_stLocalTime.wYear, m_stLocalTime.wMonth, m_stLocalTime.wDay)); } CTimeSet::EF_DAYOFWEEK CTimeSet::CalculateDayOfWeek(WORD wYear, WORD wMonth, WORD wDay) // 20100728 { INT aMonthDays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // 12 Month long aTotal = (wYear-1)*365L + (wYear-1)/4 - (wYear-1)/100 + (wYear-1)/400; if (!(wYear%4) && (wYear%100) || !(wYear%400)) { ++aMonthDays[1]; } for (int aIndex = 0 ; wMonth-1 > aIndex ; ++aIndex) { aTotal += aMonthDays[aIndex]; } aTotal += wDay; return(static_cast(aTotal % 7)); }