태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.


댓글 하나가 운영자에겐 커다란 힘이 됩니다!

 * `기준일자에서 이전/이후 일자 구하는 함수`
 * @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: }

위의 정보가 도움이 되셨나요? 그렇다면 댓글 하나만 남겨주세요.
댓글 하나가 운영자에겐 커다란 힘이 됩니다!

Write your message and submit
« PREV : 1 : ... 265 : 266 : 267 : 268 : 269 : 270 : 271 : 272 : 273 : ... 436 : NEXT »