/**
* 주 계산 function
*
* $from 에서 $to 까지의 주수를 계산
* $offset 을 지정하므로써 주의 개시요일을 지정
*
* @param String $from 요일문자열(strtotime에 의존)
* @param String $to 요일문자열(strtotime에 의존)
* @param Integer $offset 개시요일(0-6:Sun-Sat)
* @return Integer
*/
function getWeeks($from, $to, $offset = 0) {
// Unix time 으로 변환
$fromT = strtotime($from);
$toT = strtotime($to);
// from <= to 관계를 유지
if ($fromT > $toT) {
$t = $fromT;
$fromT = $toT;
$toT = $fromT;
}
// from - to 의 일수를 계산
$diffD = ceil(($toT - $fromT) / 86400);
// from 과 to의 요일번호를 취득
$fromW = adjustWeekNumber($fromT, $offset);
$toW = adjustWeekNumber($toT, $offset);
if ($diffD == 0) {
return 1;
} else if ($diffD < 7) {
return ($fromW > $toW) ? 2 : 1;
} else {
if ($fromW == 0 and $toW == 6) {
return $diffD / 7;
} else if (($fromW != 0 and $toW == 6) or ($fromW == 0 and $toW != 6)) {
return ceil(($diffD + 1) / 7);
} else {
return ceil(($diffD - (7 - $fromW) - ($toW + 1)) / 7) + 2;
}
}
}
/**
* 주가 offset부터 시작되도록 요일번호를 조정
*
* @param Integer $time
* @param Integer $offset (0-6:Sun-Sat)
* @return Integer
*/
function adjustWeekNumber($time, $offset = 0) {
$offset = ($offset < 0 or $offset > 6) ? 0 : $offset;
$week = date("w", $time);
return ($week < $offset) ? (6 - $week) : ($week - $offset);
}
'PHP' 카테고리의 다른 글
PHP 날짜 함수 정리 (0) | 2013.02.18 |
---|---|
엑셀로 보낼때 숫자 인식하도록 하기 (0) | 2013.02.18 |
Deprecated: Function ereg_replace() is deprecated .. 해결 (0) | 2013.02.18 |
Deprecated: Function session_unregister() is deprecated .. 해결 (0) | 2013.02.18 |
php함수를 javascript 함수로 변환한 사이트 (0) | 2013.02.18 |