1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>마감일을 구하고 싶을 때</title> <link href="style.css" rel="stylesheet"> </head> <body> <div> <?php date_default_timezone_set('Asia/Seoul'); $cutOffDay = 25; $date = mktime(0, 0, 0, 10, 27, 2013); echo "<p>마감일:" . $cutOffDay . "일</p>"; echo "<p>계산 기준일:" . date('Y/m/d', $date) . "</p>"; $ret = getCutOffDate($cutOffDay, $date); if( $ret !== false ) { echo "<p>결과:" . date('Y/m/d', $ret) . "</p>"; } else { echo "<p>잘못된 마감일입니다.</p>"; } // getCutOffDate() 함수 // 제1인수에는 마감일을 지정함. 1에서 31의 숫자를 지정함 // 제2인수에는 계산 기준일의 타임스탬프를 지정함 // 생략했을 경우는 현재 일시의 마감일을 계산함 function getCutOffDate($cutOffDay, $timestamp = false) { // 타임스탬프를 생략할 때는 현재의 일시를 계산 기준일로 함 if( $timestamp === false ) { $timestamp = time(); } // 지정한 마감일이 1에서 31의 범위에서 지정되었는지 확인함 if( $cutOffDay < 1 || $cutOffDay > 31 ) { return false; } // 계산 기준일의 타임스탬프로부터 년, 월, 일, 말일을 구함 $date = getdate($timestamp); $year = $date['year']; $month = $date['mon']; $day = $date['mday']; $endOfMonth = (int) date('t', $timestamp); // 말일이 지정 마감일보다 앞이면 이번 달 말일을 마감일로 반환함 // 말일로 지정한 마감일은 모두 숫자이므로 // min() 함수를 사용해 한 줄로 값을 설정하고 대입함 $fixedCutOffDay = min($endOfMonth, $cutOffDay); // 계산 기준일이 마감일을 지나는 경우 다음 달의 말일을 마감일로 반환함 if( $day > $fixedButOffDay ) { $month++; // 월을 가산함 // 지정 마감일과 다음 달의 말일을 비교해 작은 쪽을 마감일로 지정함 $endOfNextMonth = (int) date('t', mktime(0, 0, 0, $month, 1, $year)); $fixedButOffDay = min($endOfNextMonth, $cutOffDay); } // 마감일의 타임스탬프를 반환함 return mktime(0, 0, 0, $month, $fixedCutOffDay, $year); } ?> </div> </body> </html> |
2018년 5월 14일 월요일
[PHP예제] 071 마감일을 구하고 싶을 때
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기