혹시 이런 함수 또는 소스가 있을까요> 채택완료
이번달 즉 2020-05이라면 5월의 마지막 일요일이 몇일인지를 구해야 하는데요..
주 계산은 쉬운게 아니네요..ㅠㅠㅠ
혹시 php에 이런 함수가 있는지요?
또는 이런 소스를 보신적 있으시면 힌트좀 주세요..
아래 소스는 구글링에서 얻은 어느 전문가의 소스인데요..
그달에 몇주가 있는지만 안다면 아주 요긴하게 사용할 수 있을텐데...
그달에 몇일인지를 찾는 함수는 잇어도 몇주가 되는지의 함수는 없드라구요..ㅠㅠㅠ
///////////////////////////////////////////////////////////////
// getNthWeekday() 함수
// 지정 날짜의 o번째 o요일의 날짜를 반환함
// 해당하는 날짜가 없는 경우에는 false를 반환함
// 제1인수에는 연도
// 제2인수에는 월
// 제3인수에는 주 번호(제o주째) ???? ㅠㅠㅠ
// 제4인수에는 요일을 0(일요일)에서 6(토요일)의 숫자로 지정
///////////////////////////////////////////////////////////////
function getNthWeekday($year, $month, $week, $weekday) {
// 주의 지정이 옳은지 확인함
if( $week < 1 || $week > 5 ) { return false; }
// 요일의 지정이 옳은지 확인함
if( $weekday < 0 || $weekday > 6 ) { return false; }
// 지정한 년 월의 첫째 날(1일)의 요일을 구함
$weekdayOfFirst = (int) date('w', mktime(0, 0, 0, $month, 1, $year));
// 첫 째 날의 월요일을 바탕으로 첫 번째 o요일의 날짜를 구함
$firstDay = $weekday - $weekdayOfFirst + 1;
if( $firstDay <= 0 ) { $firstDay += 7; }
// 첫 번째 o요일에 7의 배수를 가산해 제o주의 o요일의 날짜를 구함
$resultDay = $firstDay + 7 * ($week - 1);
// 마지막으로 처리 결과가 올바른 날짜인지 확인함.
if( ! checkdate($month, $resultDay, $year) ) { return false; }
return $resultDay;
}
답변 4개
한달이 몇주를 가지고 있느냐는 일요일 기준인지, 월요일 기준인지 에 따라 달라지기 때문에 그런식으로 만들지 않는겁니다. ㅎㅎ
2020년 6월의 마지막 일요일은
getNthWeekday(2020, 6, 5, 0);
getNthWeekday(2020, 6, 4, 0);
getNthWeekday(2020, 6, 3, 0);
순으로 for 문 돌면서 false 가 아닌 값이 나오면 그걸로 구하면 되겠네요
댓글을 작성하려면 로그인이 필요합니다.
* 현재월의 마지막 일요일 날짜
echo date("Y-m-d", strtotime("last Sunday of this month"));
* 2019년 6월의 마지막 일요일 날짜
echo date("Y-m-d", strtotime("last Sunday of June 2019"));
댓글을 작성하려면 로그인이 필요합니다.
힌트 감사드립니다..
루프돌려 찾으니 잘 찾네요.. 몇번 안돌리니 무리도 없을꺼같구요..
댓글을 작성하려면 로그인이 필요합니다.
월의 마지막 날짜 구하고(그런 함수가 있을 겁니다.)
마직막 날짜부터 하나씩 날짜 줄이며 loop 돌려서
일요일인지 체크하면 되겠습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인