테스트 사이트 - 개발 중인 베타 버전입니다

혹시 이런 함수 또는 소스가 있을까요> 채택완료

소수리꼬 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 가 아닌 값이 나오면 그걸로 구하면 되겠네요

 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

5년 전

* 현재월의 마지막 일요일 날짜
echo date("Y-m-d", strtotime("last Sunday of this month"));

 

* 2019년 6월의 마지막 일요일 날짜
echo date("Y-m-d", strtotime("last Sunday of June 2019"));

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

힌트 감사드립니다..

루프돌려 찾으니 잘 찾네요.. 몇번 안돌리니 무리도 없을꺼같구요..

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

d
5년 전

월의 마지막 날짜 구하고(그런 함수가 있을 겁니다.)

마직막 날짜부터 하나씩 날짜 줄이며 loop 돌려서

일요일인지 체크하면 되겠습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인