1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>세 번째 월요일을 구하고 싶을 때</title>
<link href="style.css" rel="stylesheet">
</head>
<body>
<div>
<?php
date_default_timezone_set('Asia/Seoul');
echo "<p>2016년 7월의 세 번째 월요일 구하기</p>";
$year = 2016;
$month = 7;
$week = 3;
$weekday = 1; // 월요일
$ret = getNthWeekday($year, $month, $week, $weekday);
if( $ret !== false )
{
echo $ret . "일";
}
else
{
echo "해당하는 날짜는 존재하지 않음";
}
echo "</p>";
// 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;
}
?>
</div>
</body>
</html>
|
2018년 5월 14일 월요일
[PHP예제] 072 세 번째 월요일을 구하고 싶을 때
피드 구독하기:
댓글 (Atom)

지금 꼭 필요하던 거였는데 만들기는 귀찮고 해서 혹시나 해서 검색 해봤는데 딱 있네요. 감사합니다.
답글삭제