기준일자에서 이전/이후 일자 구하는 함수(mktime, localtime 사용)
Posted 2008/06/03 15:12|
|
|
댓글 하나가 운영자에겐 커다란 힘이 됩니다!
* `기준일자에서 이전/이후 일자 구하는 함수`
* @param tDate `입력: 기준일자 (YYYYMMDDhhmmss)`
* @param timeF `입력: 2->일, 3->시간, 4->분, 5->초`
* @param period `입력: 단위별(월,일..) 이전기간`
예> 20080502060000 -> 20080503060000
기준일자는 "년,월,일,시,분,초"를 모두 포함하는 14 + 1(null)자리 문자열이어야한다.
* @param tDate `입력: 기준일자 (YYYYMMDDhhmmss)`
* @param timeF `입력: 2->일, 3->시간, 4->분, 5->초`
* @param period `입력: 단위별(월,일..) 이전기간`
예> 20080502060000 -> 20080503060000
기준일자는 "년,월,일,시,분,초"를 모두 포함하는 14 + 1(null)자리 문자열이어야한다.
01: int E8204A_GetCalcTimeA(char *sDate, char *tDate, int flagF, int period) 02: { 03: time_t tm; 04: struct tm *outTm; 05: struct tm inTm; 06: double sec = 0; 07: int min = 0; 08: int hour = 0; 09: int day = 0; 10: int dum = 0; 11: char YYYY[4+1] = {0,}; 12: char MM[2+1] = {0,}; 13: char DD[2+1] = {0,}; 14: char HH[2+1] = {0,}; 15: char MI[2+1] = {0,}; 16: char SS[2+1] = {0,}; 17: 18: // 초기화 시키지 않을경우 예상과 결과가 다를 수있다. 19: // 테스트 결과 ms windows환경에서는 문제가 없었지만, 20: // unix 환경에서는 문제가 되었다. 21: // 꼭 초기화를 해주자. 22: memset( &inTm, '\0', sizeof(struct tm) ); 23: 24: switch(flagF) 25: { 26: case 2: 27: sec = period * (-24 * 60 * 60); 28: break; 29: case 3: 30: sec = period * (-60 * 60); 31: break; 32: case 4: 33: sec = period * (-60); 34: break; 35: case 5: 36: sec = period * (-1); 37: break; 38: } 39: 40: memcpy(YYYY, sDate, 4); 41: inTm.tm_year = atoi(YYYY) - 1900; 42: memcpy(MM, sDate+4, 2); 43: inTm.tm_mon = atoi(MM) - 1; 44: memcpy(DD, sDate+6, 2); 45: inTm.tm_mday = atoi(DD); 46: memcpy(HH, sDate+8, 2); 47: inTm.tm_hour = atoi(HH) - 1; 48: memcpy(MI, sDate+10, 2); 49: inTm.tm_min = atoi(MI); 50: memcpy(SS, sDate+12, 2); 51: inTm.tm_sec = atoi(SS); 52: 53: tm = mktime(&inTm); 54: 55: tm -= sec; 56: 57: outTm = localtime(&tm); 58: 59: sprintf(tDate, "%04d%02d%02d%02d%02d%02d", outTm->tm_year + 1900 61: , outTm->tm_mon + 1 62: , outTm->tm_mday 63: , outTm->tm_hour + 1 64: , outTm->tm_min 65: , outTm->tm_sec); 66: 67: return 0; 68: }
위의 정보가 도움이 되셨나요? 그렇다면 댓글 하나만 남겨주세요.
댓글 하나가 운영자에겐 커다란 힘이 됩니다!

