和大家分享一個簡易的萬年歷制作過程。
基本要求:
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.在實現上一月和下一月的功能時,將幾個變量作為參數帶入,再配合一定的算法就能搞定了。具體的就看代碼吧,文字也得再好也不如看兩行代碼效果好。