和大家分享一個簡易的萬年歷制作過程。
基本要求:
1.獲取日期
2.獲取給定日期是幾號
3.獲取給定日期是周幾
4.獲取月份天數
5.獲取上一月和下一月
先貼一張效果圖,樣式做的比較丑,不喜勿噴。

php代碼:
";
//獲取當前年
$year=$_GET['Y']?$_GET['Y']:date('Y');
//獲取當前月
$month=$_GET['m']?$_GET['m']:date('m');
//獲取當月有多少天
$days=date('t',strtotime("{$year}-{$month}-1"));
//當前是周幾
$week=date('w',strtotime("{$year}-{$month}-1"));
//內容居中顯示
echo "";
//打印表頭
echo "{$year}年{$month}月
";
//打印日期表格
echo "";
//打印星期
echo "";
echo "周日 ";
echo "周一 ";
echo "周二 ";
echo "周三 ";
echo "周四 ";
echo "周五 ";
echo "周六 ";
echo "";
//打印幾號
for($i=1-$week;$i<=$days;){
echo "";
for($j=0;$j<7;$j++){
if($i>$days||$i<1){
echo " ";
}else{
echo "$i";
}
$i++;
}
echo "";
}
echo "";
//上一月和下一月算法
if($month==1){
$prevyear=$year-1;
$prevmonth=12;
}else{
$prevyear=$year;
$prevmonth=$month-1;
}
if($month==12){
$nextyear=$year+1;
$nextmonth=1;
}else{
$nextyear=$year;
$nextmonth=$month+1;
}
//上一月和下一月的超鏈接
echo "上一月&下一月
";
echo " ";
?>table{
width:500px;
height:300px;
border:red dashed 1px;
background:#ff00ff;
}
tr{
text-align:center;
}
td{
border:gray dotted 1px;
}
h1{
font-style:italic;
font-size:50px;
font-family:'宋體';
}
h2 a{
font-style:normal;
font-size:40px;
font-family:'黑體';
color:purple;
}
/*組合選擇器*/
tr,td,th{
font-size:20px;
background:gray;
}
1.strtotime()中所計算的時間戳應該是完整的一個格式,把一個單獨的年或月放進去是沒有用的。
2.if語句中的條件裡面,不是賦值,是等於!!!,要寫 兩個==。這地方太容易給忽略了。
3.原本打印的日期一直都是周日和一號對應。但是月份不同,這個日期和星期的對應關系也會有所改變,所以,在for循環中將$i-$week.就可以將當月的所有日期後退一定時間,達到日期與星期的完美對應。
4.在實現上一月和下一月的功能時,將幾個變量作為參數帶入,再配合一定的算法就能搞定了。具體的就看代碼吧,文字也得再好也不如看兩行代碼效果好。