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