效果圖
php 生成萬年曆效果圖邏輯 邏輯
<?php
header("Content-type:text/html;charset=utf-8"); // 設定頁面編碼為utf-8
date_default_timezone_set("Asia/Shanghai"); // 設定日期時區為中國時區
$today = time(); // 擷取目前日期時間戳
$year = @$_GET["year"]; // 擷取使用者送出的年份資訊
$month = @$_GET["month"]; // 擷取使用者送出的月份資訊
if ($year == '') { // 擷取目前日期的年份
$year = date("Y", $today);
}
if ($month == '') { // 擷取目前日期的月份
$month = date("m", $today);
}
if ((int)$month == 0) { // 把日期轉換為整型
$year -= 1;
$month = 12;
}
$time = mktime(0, 0, 0, $month, 1, $year); // 格式化目前日期
$year = date('Y', $time); // 格式化年份
$month = date('m', $time); // 格式化月份
$days = date('t', $time); // 目前月份一共有幾天
$fstdw = date('N', $time); // 目前月份第一天為星期幾
/*
* 萬年曆 表頭+星期标簽
* **/
echo "<table border=1 width=260 cellspacing=0 cellpadding=0 align=center
bgcolor=#cccccc>"; // 大表格
echo "<tr><td colspan=7 class=title>"; // 第一行表格
$str = "<a href=?year=" . ($year - 1) . "&month=" . $month . ">";
$str .= "«</a>" . $year . "年"; // 輸出年份
$str .= "<a href=?year=" . ($year + 1) . "&month=" . $month . ">";
$str .= "»</a> ";
$str .= "<a href=?year=" . $year . "&month=" . ($month - 1) . ">";
$str .= "«</a> " . $month . "月 "; // 輸出月份
$str .= "<a href=?year=" . $year . "&month=" . ($month + 1) . ">";
$str .= "»</a>";
echo $str;
echo "</td></tr>";
echo "<tr>"; // 換行
$str = "<td>一</td>"; // 目前及以下輸出星期
$str .= "<td>二</td>";
$str .= "<td>三</td>";
$str .= "<td>四</td>";
$str .= "<td>五</td>";
$str .= "<td>六</td>";
$str .= "<td>七</td>";
echo $str; // 輸出子表格
echo "</td>"; // 輸出表格外框
/*
* 萬年曆 月份
* **/
$rows = ceil(($days + $fstdw - 1) / 7); // 要輸出的行數 ceil()四舍五入
$cd = 1; // 第一天值為1
for ($i = 0; $i < $rows; $i++) { // 外層循環行
echo "<tr>"; // 列印輸出行
for ($j = 0; $j < 7; $j++) { // 内層循環單元格
echo "<td>"; // 列印輸出單元格
if ($cd >= $fstdw && $cd < $days + $fstdw) {
$oday = $cd - $fstdw + 1; // 計算出最終天數
if ($oday == date('d', time())) { // 若循環到目前日期
echo "<font-face color='red'><b><u>"; // 日期加粗、變色顯示
}
echo $oday; // 在單元格内顯示天數
} else {
echo ".";
}
$cd++; // 天數每次循環增加1
echo "</td>";
}
echo "</tr>";
}
echo "</table>"; // 輸出表格
···