$max_year) $year = date("Y"); if(!(int)$month || $month < 1 || $month > 12) $month = date("n"); switch($method) { case 'prev_year' : $year --; break; case 'prev_month' : $month --; if($month < 1) { $month = 12; $year --; } break; case 'next_month' : $month ++; if($month > 12) { $month = 1; $year ++; } break; case 'next_year' : $year ++; break; } // 긴 이름 $monthLongName = array(1 => "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); // 짧은 이름 $monthShortName = array(1 => "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); // 요일 이름 $dayName = array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"); /* * @brief 윤년 검사 */ function isLeapYear($year) { if ($year % 4 == 0 && $year % 100 != 0 || $year % 400 == 0) return true; else return false; } /* * @brief 날짜 수 계산 */ function convertDatetoDay($year, $month, $day = 0) { $numOfLeapYear = 0; // 윤년의 수 // 전년도까지의 윤년의 수를 구한다. for($i = 0; $i < $year; $i++) { if(isLeapYear($i)) $numOfLeapYear++; } // 전년도까지의 일 수를 구한다. $toLastYearDaySum = ($year-1) * 365 + $numOfLeapYear; // 올해의 현재 월까지의 일수 계산 $thisYearDaySum = 0; // 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 $endOfMonth = array(1 => 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); for($i = 1; $i < $month; $i++) { $thisYearDaySum += $endOfMonth[$i]; } // 윤년이고, 2월이 포함되어 있으면 1일을 증가시킨다. if ($month > 2 && isLeapYear($year)) $thisYearDaySum++; if(isLeapYear($year)) $endOfMonth[2] = 29; if($day) { $thisYearDaySum += $day; return $toLastYearDaySum + $thisYearDaySum - 1; } else { return $endOfMonth[$month]; } } /* * @brief 요일 구하기 */ function getDayOfWeek($year, $month, $day) { // 0~6의 값을 반환한다. 결과가 0이면 일요일이다. return convertDatetoDay($year, $month, $day) % 7; } $start_week = getDayOfWeek($year, $month, 1); $month_day = convertDatetoDay($year, $month); $before_month_month_day = convertDatetoDay( $month == 1 ? $year - 1 : $year, $month == 1 ? 12 : $month - 1); ?>