日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

拿php做个日历,分享如何用PHP制作日历(附代码)

發布時間:2024/8/1 php 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 拿php做个日历,分享如何用PHP制作日历(附代码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

教大家制作簡單的php日歷,一個專屬于自己的php日歷,喜歡的朋友不要錯過,動手制作自己的日歷。

最近的一個項目中,需要將數據用日歷方式顯示,網上有很多的JS插件,后面為了自己能有更大的控制權,決定自己制作一個日歷顯示。如下圖所示:

一、計算數據

1、new一個Calendar類

2、初始化兩個下拉框中的數據,年份與月份

3、初始化要搜索的年份和月份

4、計算得出日歷中每一天的數據信息,包括css、天數

require_once 'calendar.php';

$util = new Calendar();

$years = array(2012, 2013, 2014, 2015, 2016);//年份選擇自定義

$months = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);//月份數組

//獲取post的年份數據

if(empty($_POST['ddlYear'])) {

$year = date('Y');

}else {

$year = $_POST['ddlYear'];

}

//獲取post的月份數據

if(empty($_POST['ddlMonth'])) {

$month = date('n');

}else {

$month = $_POST['ddlMonth'];

}

$calendar = $util->threshold($year, $month);//獲取各個邊界值

$caculate = $util->caculate($calendar);//計算日歷的天數與樣式

$draws = $util->draw($caculate);//畫表格,設置table中的tr與td

?>

二、html展示

1、休息天的背景色是不同的,不是當前搜索年月的天數字體顏色也是不同的

2、p中做初始化年份與月份的下拉框的操作,并選中當前要搜索的年月

3、數據已計算好,哪個td屬于哪個tr也已做好,直接將table打印出來即可

><?php echo $data?>

><?php echo $data?>

日一二三四五六

三、Calendar類

1、threshold方法,生成日歷的各個邊界值

1)計算這個月總天數

2)計算這個月第一天與最后一天,各是星期幾

3)計算日歷中的第一個日期與最后一個日期

/**

* @deprecated 生成日歷的各個邊界值

* @param string $year

* @param string $month

* @return array

*/

function threshold($year, $month) {

$firstDay = mktime(0, 0, 0, $month, 1, $year);

$lastDay = strtotime('+1 month -1 day', $firstDay);

//取得天數

$days = date("t", $firstDay);

//取得第一天是星期幾

$firstDayOfWeek = date("N", $firstDay);

//獲得最后一天是星期幾

$lastDayOfWeek = date('N', $lastDay);

//上一個月最后一天

$lastMonthDate = strtotime('-1 day', $firstDay);

$lastMonthOfLastDay = date('d', $lastMonthDate);

//下一個月第一天

$nextMonthDate = strtotime('+1 day', $lastDay);

$nextMonthOfFirstDay = strtotime('+1 day', $lastDay);

//日歷的第一個日期

if($firstDayOfWeek == 7)

$firstDate = $firstDay;

else

$firstDate = strtotime('-'. $firstDayOfWeek .' day', $firstDay);

//日歷的最后一個日期

if($lastDayOfWeek == 6)

$lastDate = $lastDay;

elseif($lastDayOfWeek == 7)

$lastDate = strtotime('+6 day', $lastDay);

else

$lastDate = strtotime('+'.(6-$lastDayOfWeek).' day', $lastDay);

return array(

'days' => $days,

'firstDayOfWeek' => $firstDayOfWeek,

'lastDayOfWeek' => $lastDayOfWeek,

'lastMonthOfLastDay' => $lastMonthOfLastDay,

'firstDate' => $firstDate,

'lastDate' => $lastDate,

'year' => $year,

'month' => $month

);

}

2、caculate方法,計算日歷的天數與樣式

1)將上個月的天數計算出來,本月第一天的星期不是星期天的話,就需要根據上個月的最后一天計算

2)將本月的天數遍歷出來,如果是休息天就加上特殊的css樣式

3)將下個月的天數計算出來,分三種情況,星期日、星期六和工作日

/**

* @author Pwstrick

* @param array $calendar 通過threshold方法計算后的數據

* @deprecated 計算日歷的天數與樣式

*/

function caculate($calendar) {

$days = $calendar['days'];

$firstDayOfWeek = $calendar['firstDayOfWeek'];//本月第一天的星期

$lastDayOfWeek = $calendar['lastDayOfWeek'];//本月最后一天的星期

$lastMonthOfLastDay = $calendar['lastMonthOfLastDay'];//上個月的最后一天

$year = $calendar['year'];

$month = $calendar['month'];

$dates = array();

if($firstDayOfWeek != 7) {

$lastDays = array();

$current = $lastMonthOfLastDay;//上個月的最后一天

for ($i = 0; $i < $firstDayOfWeek; $i++) {

array_push($lastDays, $current);//添加上一個月的日期天數

$current--;

}

$lastDays = array_reverse($lastDays);//反序

foreach ($lastDays as $index => $day) {

array_push($dates, array('day' => $day, 'tdclass' => ($index ==0 ?'rest':''), 'pclass' => 'outter'));

}

}

//本月日歷信息

for ($i = 1; $i <= $days; $i++) {

$isRest = $this->_checkIsRest($year, $month, $i);

//判斷是否是休息天

array_push($dates, array('day' => $i, 'tdclass' => ($isRest ?'rest':''), 'pclass' => ''));

}

//下月日歷信息

if($lastDayOfWeek == 7) {//最后一天是星期日

$length = 6;

}

elseif($lastDayOfWeek == 6) {//最后一天是星期六

$length = 0;

}else {

$length = 6 - $lastDayOfWeek;

}

for ($i = 1; $i <= $length; $i++) {

array_push($dates, array('day' => $i, 'tdclass' => ($i==$length ?'rest':''), 'pclass' => 'outter'));

}

return $dates;

}

3、draw方法,畫表格,設置table中的tr與td

1)數據將要用table標簽來顯示,所以這里要將各個tr下面的td排列好

2)$index % 7 == 0 計算表格每行的第一列

3)$index % 7 == 6 || $index == ($length-1) 計算每行的最后一列,或$caculate的最后一個數據

4)將中間行添加到$tr中,就是每一行的array

/**

* @author Pwstrick

* @param array $caculate 通過caculate方法計算后的數據

* @deprecated 畫表格,設置table中的tr與td

*/

function draw($caculate) {

$tr = array();

$length = count($caculate);

$result = array();

foreach ($caculate as $index => $date) {

if($index % 7 == 0) {//第一列

$tr = array($date);

}elseif($index % 7 == 6 || $index == ($length-1)) {

array_push($tr, $date);

array_push($result, $tr);//添加到返回的數據中

$tr = array();//清空數組列表

}else {

array_push($tr, $date);

}

}

return $result;

}

通過本文大家應該知道日歷制作的方法了,那就趁熱打鐵,做一個屬于自己日歷。

【相關教程推薦】

相關標簽:php 日歷

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

總結

以上是生活随笔為你收集整理的拿php做个日历,分享如何用PHP制作日历(附代码)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品人妻一区二区三区蜜桃 | 午夜剧场免费在线观看 | 日韩av手机在线播放 | 91精品久久久久久久99蜜桃 | 日本精品视频 | 日韩成人av网站 | 中国黄色录像 | 黄网站在线播放 | 久久精品视频网 | 国产95在线 | 成人爽a毛片一区二区 | 中国黄色录像一级片 | 91久久久国产精品 | 国产新婚疯狂做爰视频 | 欧美日韩不卡在线 | 日韩精品在线视频免费观看 | 国产一区二区电影 | 欧美一级片在线免费观看 | 古代黄色片 | 美人被强行糟蹋np各种play | 99久久久无码国产精品不卡 | 牛牛精品一区二区 | 动漫精品一区一码二码三码四码 | 欧美日本国产在线 | 久久日韩精品 | 99久久精品日本一区二区免费 | 人与动物2免费观看完整版电影高清 | 久草观看视频 | 大尺度做爰床戏呻吟舒畅 | 中文字幕高清视频 | 亚洲福利视频网站 | 一级片免费在线 | 精品人妻伦一二三区久 | 在线黄色免费 | 欧美黄色特级片 | 成人免费黄色网址 | 国产精品美女一区二区 | avwww.| 亚洲一卡二卡 | 黄色小毛片 | 国产精品九九九 | 99黄色片 | 国产aⅴ| 97精品久久 | 日韩女优在线观看 | 久久的色偷偷 | 伊人91视频 | 亚洲高潮 | 交hdsexvideos娇小 | 亚洲熟女综合一区二区三区 | 在线免费看污视频 | 成人 黄 色 免费播放 | 制服av网| 新x8x8拨牐拨牐永久免费影库 | 欧美男同又粗又长又大 | 日韩夜夜高潮夜夜爽无码 | 又粗又猛又爽又黄的视频 | 三a大片 | 999国产在线 | 天堂在线成人 | 少妇av一区二区三区无码 | 天天cao在线 | 亚洲天堂高清 | 亚洲资源在线播放 | 国产精品外围 | 中国女人一级片 | 九九热精品在线 | 亚洲av综合色区无码一区 | 日日射夜夜 | 香港三级韩国三级日本三级 | 看av网址 | 中文在线a∨在线 | 吃瓜网今日吃瓜 热门大瓜 色婷在线 | 加勒比毛片 | www.69pao.com| 深夜福利免费视频 | 日韩黄色免费观看 | 国产亚洲精品av | 亚洲av无码国产综合专区 | 亚洲乱熟女一区二区三区小说 | 91在线视频免费 | 美女擦边视频 | 春色激情 | 97干在线 | 亚洲美女在线观看 | 国产欧美日韩 | 国产伦精品一区二区三区免费 | 青娱乐99 | 男人看的网站 | 天天网综合 | 亚洲视频精选 | 嫩草综合 | 久久亚洲天堂网 | 国产有码视频 | 大地资源二中文在线影视免费观看 | hitomi一区二区三区精品 | 精品96久久久久久中文字幕无 | 97人妻一区二区精品视频 | 国产午夜在线观看 |