現(xiàn)在以2010年6月14日為例說(shuō)明。6月份共有30天,在這個(gè)日歷表中共5行,首先需要確定當(dāng)前所在的日期(當(dāng)然也可以指定一個(gè)日期),比如14日,通過(guò)表格可以知道它在第3行對(duì)應(yīng)星期一那列(第3周)。通常每個(gè)月第1天不是在表格開(kāi)始的位置,位置并不固定,同樣不固定的還有每個(gè)月的周數(shù),有時(shí)候是4周,有時(shí)候是5周。這樣,想要完成這個(gè)日歷表格就需要確定一些基礎(chǔ)的日期變量,下面具體來(lái)看需要設(shè)定的基礎(chǔ)變量。
創(chuàng)新互聯(lián)公司專(zhuān)注于江門(mén)企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站建設(shè)。江門(mén)網(wǎng)站建設(shè)公司,為江門(mén)等地區(qū)提供建站服務(wù)。全流程按需求定制網(wǎng)站,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)
PHP提供了date()函數(shù),該函數(shù)提供了豐富的日期處理功能?,F(xiàn)在需要獲得的數(shù)據(jù)有兩個(gè),第一個(gè)是當(dāng)月的總天數(shù);第二個(gè)是該月的第一天所在星期中的第幾天,數(shù)字表示0(表示星期天)到6(表示星期六)。通過(guò)date()函數(shù)可以很容易獲得上面的數(shù)據(jù)。
?php
//date()函數(shù)的基本用法
$year = date('Y'); //獲得年份,例如2006
$month = date('n'); //獲得月份,例如04
$day = date('j'); //獲得日期,例如3
?
通過(guò)mktime()函數(shù)和date()函數(shù)獲得當(dāng)月的總天數(shù)。
//獲得當(dāng)月的總天數(shù)
$daysInMonth = date("t",mktime(0,0,0,$month,1,$year));
同樣是組合使用mktime()函數(shù)和date()函數(shù),獲得該月的第一天所在星期中的第幾天,數(shù)字表示0(表示星期天)到6(表示星期六)。
//獲得每個(gè)月的第一天,例如4
$firstDay = date("w", mktime(0,0,0,$month,1,$year));
現(xiàn)在重新來(lái)觀察下這個(gè)日歷表格,我們發(fā)現(xiàn),表格中的值是從1到x(當(dāng)月的總天數(shù))。我們可以形象地通過(guò)一個(gè)坐標(biāo)來(lái)表示每一個(gè)位置(x,y),表格的起始位置是(0,0),結(jié)束位置是(5,4),當(dāng)月第一天的起始位置是(0,3)?,F(xiàn)在來(lái)創(chuàng)建一個(gè)二維數(shù)組來(lái)存儲(chǔ)對(duì)應(yīng)的日期。
(1)需要獲得表格的數(shù)目。
//計(jì)算數(shù)組中的日歷表格數(shù)
$tempDays = $firstDay + $daysInMonth;
(2)需要算出該月一共有幾周(即表格的行數(shù))。
//獲得表格行數(shù)
$weeksInMonth = ceil($tempDays/7);
(3)在獲得行數(shù)的變量之后,創(chuàng)建一個(gè)二維數(shù)組用來(lái)存放日期信息,代碼如下:
?php
for($j=0;$j$weeksInMonth;$j++)
{
for($i=0;$i7
;$i++)
{
$counter ++;
$week [$j] [$i] = $counter;
}
}
?
(4)細(xì)心的讀者可能發(fā)現(xiàn),上面的代碼其實(shí)是一個(gè)雛型,因?yàn)樗幚沓鰜?lái)的數(shù)據(jù)并沒(méi)有過(guò)濾那些空白的表格單元。下面來(lái)繼續(xù)改造下這段代碼,加入過(guò)濾和構(gòu)造的部分。改造后的代碼如下:
?php
//創(chuàng)建日期二維數(shù)組
for($j = 0; $j $weeksInMonth; $j ++) {
for($i = 0; $i 7; $i ++) {
$counter ++;
$week [$j] [$i] = $counter;
//日期偏移量
$week [$j] [$i] -= $firstDay;
if (($week [$j] [$i] 1) || ($week [$j] [$i] $daysInMonth)) {
$week [$j] [$i] = "";
}
}
}
?
(5)在獲得正確的二維數(shù)組之后,就可以通過(guò)foreach()函數(shù)將存儲(chǔ)的日期信息遍歷出來(lái),同時(shí)插入HTML標(biāo)簽創(chuàng)建日期
不知是否正確,轉(zhuǎn)自我的一個(gè)朋友
方法一
1、找一個(gè)支持 php 的短代碼插件
2、找用 php 調(diào)用日歷的函數(shù),新建一個(gè)短代碼
3、把短代碼粘貼到文章里
方法二
在 single.php 里添加條件判斷語(yǔ)句,如果是某篇文章,那么就顯示日歷
方法三
1、找讓編輯器支持php的插件
2、找用 php 調(diào)用日歷的函數(shù)
3、把編輯器切換到 html 編輯模式,把上一步的php代碼粘貼進(jìn)去
表單提交的話。
若是get請(qǐng)求,$_GET['startDate'], post請(qǐng)求則是$_POST['startDate']