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

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

QA

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

본문

이번달 즉 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 가 아닌 값이 나오면 그걸로 구하면 되겠네요

 

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

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

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

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

 

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

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT