PHP實例————萬年歷

和大傢分享一個簡易的萬年歷制作過程。

基本要求:

1.獲取日期

2.獲取給定日期是幾號

3.獲取給定日期是周幾

4.獲取月份天數

5.獲取上一月和下一月

先貼一張效果圖,樣式做的比較醜,不喜勿噴。

vcD4KPHA+cGhwtPrC66O6PC9wPgo8cD48cHJlIGNsYXNzPQ==”brush:java;”><?php

//修改字符編碼
header("content-type:text/html;charset=utf-8");

//外部樣式鏈接
echo "”;

//獲取當前年
$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$days||$i<1){
echo "

“;
}else{
echo “

“;
}
$i++;
}
echo “

“;
}
echo “

周日 周一 周二 周三 周四 周五 周六
  $i

“;

//上一月和下一月算法
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 “”;
?>
CSS代碼:

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.在實現上一月和下一月的功能時,將幾個變量作為參數帶入,再配合一定的算法就能搞定瞭。具體的就看代碼吧,文字也得再好也不如看兩行代碼效果好。

發佈留言