반응형
php 언어로 간단하게 달력 만드는 소스 입니다.
<?php
//---- 오늘 날짜
$thisyear = date('Y'); // 4자리 연도
$thismonth = date('n'); // 0을 포함하지 않는 월
$today = date('j'); // 0을 포함하지 않는 일
//------ $year, $month 값이 없으면 현재 날짜
$year = isset($_GET['year']) ? $_GET['year'] : $thisyear;
$month = isset($_GET['month']) ? $_GET['month'] : $thismonth;
$day = isset($_GET['day']) ? $_GET['day'] : $today;
$prev_month = $month - 1;
$next_month = $month + 1;
$prev_year = $next_year = $year;
if ($month == 1) {
$prev_month = 12;
$prev_year = $year - 1;
} else if ($month == 12) {
$next_month = 1;
$next_year = $year + 1;
}
$preyear = $year - 1;
$nextyear = $year + 1;
$predate = date("Y-m-d", mktime(0, 0, 0, $month - 1, 1, $year));
$nextdate = date("Y-m-d", mktime(0, 0, 0, $month + 1, 1, $year));
// 1. 총일수 구하기
$max_day = date('t', mktime(0, 0, 0, $month, 1, $year)); // 해당월의 마지막 날짜
//echo '총요일수'.$max_day.'<br />';
// 2. 시작요일 구하기
$start_week = date("w", mktime(0, 0, 0, $month, 1, $year)); // 일요일 0, 토요일 6
// 3. 총 몇 주인지 구하기
$total_week = ceil(($max_day + $start_week) / 7);
// 4. 마지막 요일 구하기
$last_week = date('w', mktime(0, 0, 0, $month, $max_day, $year));
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<style>
font.holy {font-family: tahoma;font-size: 20px;color: #FF6C21;}
font.blue {font-family: tahoma;font-size: 20px;color: #0000FF;}
font.black {font-family: tahoma;font-size: 20px;color: #000000;}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<table class="table table-bordered table-responsive">
<tr align="center" >
<td>
<a href=<?php echo 'test2.html?year='.$preyear.'&month='.$month . '&day=1'; ?>>◀◀</a>
</td>
<td>
<a href=<?php echo 'test2.html?year='.$prev_year.'&month='.$prev_month . '&day=1'; ?>>◀</a>
</td>
<td height="50" bgcolor="#FFFFFF" colspan="3">
<a href=<?php echo 'test2.html?year=' . $thisyear . '&month=' . $thismonth . '&day=1'; ?>>
<?php echo " " . $year . '년 ' . $month . '월 ' . " "; ?></a>
</td>
<td>
<a href=<?php echo 'test2.html?year='.$next_year.'&month='.$next_month.'&day=1'; ?>>▶</a>
</td>
<td>
<a href=<?php echo 'test2.html?year='.$nextyear.'&month='.$month.'&day=1'; ?>>▶▶</a>
</td>
</tr>
<tr class="info">
<th hight="30">일</td>
<th>월</th>
<th>화</th>
<th>수</th>
<th>목</th>
<th>금</th>
<th>토</th>
</tr>
<?php
// 5. 화면에 표시할 화면의 초기값을 1로 설정
$day=1;
// 6. 총 주 수에 맞춰서 세로줄 만들기
for($i=1; $i <= $total_week; $i++){?>
<tr>
<?php
// 7. 총 가로칸 만들기
for ($j = 0; $j < 7; $j++) {
// 8. 첫번째 주이고 시작요일보다 $j가 작거나 마지막주이고 $j가 마지막 요일보다 크면 표시하지 않음
echo '<td height="50" valign="top">';
if (!(($i == 1 && $j < $start_week) || ($i == $total_week && $j > $last_week))) {
if ($j == 0) {
// 9. $j가 0이면 일요일이므로 빨간색
$style = "holy";
} else if ($j == 6) {
// 10. $j가 0이면 토요일이므로 파란색
$style = "blue";
} else {
// 11. 그외는 평일이므로 검정색
$style = "black";
}
// 12. 오늘 날짜면 굵은 글씨
if ($year == $thisyear && $month == $thismonth && $day == date("j")) {
// 13. 날짜 출력
echo '<font class='.$style.'>';
echo $day;
echo '</font>';
} else {
echo '<font class='.$style.'>';
echo $day;
echo '</font>';
}
// 14. 날짜 증가
$day++;
}
echo '</td>';
}
?>
</tr>
<?php } ?>
</table>
</div>
</body>
</html>
반응형
'PHP' 카테고리의 다른 글
php 파일존재 확인 file_exists() 함수 (0) | 2021.11.21 |
---|---|
php 업로드 move_uploaded_file() 함수 (0) | 2021.11.21 |
간단한 캡차파일 만들기 captcha (0) | 2021.11.21 |
[인코딩] 유니코드 인코딩 처리 (특히 json 입출력 시) (0) | 2021.10.22 |
str_replace php 문자열치환 (0) | 2021.08.25 |
댓글