用PHP寫一個簡單的日曆
用PHP寫一個簡單的日曆
作者:黑馬
出處:
日曆被廣泛應用於網路日誌。作為網路日誌導航的一種實現方式,我們不需要太複雜的日曆,有年、月、日、週日即可,本文要討論的就是這類簡單的日記。
一個日曆在佈局上要求日期和星期相對應,可以用表格來實現。一週有七天,我們將寫一個7×N的表格來構造我們的日曆。星期將是固定地寫在表格的某一行(通常為第一行或第二行)。為此,我們首先需要判斷當前要處理的月份的第一天是星期幾以便確定第一天寫在表格第二行或第三行的第幾個單元格。
確定某年的某個月有多少天,在PHP中可以簡單地用date()函式取得。比如,要取得此時所屬月份的日期總數,只需要簡單的列印 date("t") 即可。而要取得任意年任何月份的天數,需要借用mktime()函式,mktime()返回一個從UNIX時代(1970年1月1日)開始以來的秒數,它的格式如下:mktime(時,分,秒,月,日,年)。比如,mktime(0,0,0,2,22,2006)返回從1970年1日1日到2006年2月22日的秒數。值得注意的是,mktime()函式所能處理的日曆範圍從1970年開始,到2037年止(Windows XP的日期從(1980年到2099年),這意味著我們製作的PHP日曆是有年份限制的。
知道要處理的月份的第一天為星期幾,就可以開始製作日曆了。比如2006年2月1日為星期三,日期將從表格中要顯示日期的第一行的第四個單元格寫起,直到寫完當月的所有日期。前面說過,表格是7×N格式的,什麼時候寫
$i%7=0 → 寫
$i%7=6 → 寫
表格的最後一行可能會存在一些空的單元格(正如寫日期的第一行前面可能有空單元格一樣),可以這麼處理:透過計算餘數,如果寫完日期後還剩2個或以上單元格的就合併它們,只剩下一個的就寫一個td標籤,此部分請參考稍後提供的程式碼進行理解。
一個日曆,年份和月份是動態變化的,可以簡單地給年份和月份製作前進、後退連結,我們用一組三元運算子來確定連結取值,以下以年的倒退連結值為例加以簡單說明:
$y_lnk1=$year<=1970?$year=1970:$year-1;
這句程式碼,先判斷當前處理年($year)的年份是否小於等於1970年,如果成立,則把年定死在1970年上($year=1970),不再往前倒退,反之,如果當前處理年的年份大於1970年,則令該連結的值(即年份)倒退一年($year-1)。
其他的連結(年前進、月倒退、月前進)道理同上。
以下是整個日曆的完整程式碼,使用時請把美元符號改為小角狀態:
//php日曆程式 檔名:cal.php
if(empty($year)) $year=date("Y"); //初始化年份
if(empty($month)) $month=date("n"); //初始化月份
$wd_ar=array("日","一","二","三","四","五","六"); //星期陣列
$wd=date("w",mktime(0,0,0,$month,1,$year)); //當月第一天是星期幾
//年連結
$y_lnk1=$year<=1970?$year=1970:$year-1;
$y_lnk2=$year>=2037?$year=2037:$year+1;
//月連結
$m_lnk1=$month<=1?$month=1:$month-1;
$m_lnk2=$month>=12?$month=12:$month+1;
print "
< ".$year."年 > | ";< ".$month."月 > | |||||
$wd_ar[$i] | ";||||||
"; if($i>=$wd) print $date-$wd; print " | ";"; | "; |
?>
程式碼非常簡單,兩個日期函式的靈活運用和簡單的一些演算法,就能完成一個日曆的編寫工作
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/786540/viewspace-970128/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 封裝一個簡單的日曆元件封裝元件
- PHP實現的簡單日曆程式碼PHP
- vue寫一個炫酷的日曆元件Vue元件
- JS編寫日曆控制元件(支援單日曆 雙日曆 甚至多日曆等)JS控制元件
- 用java寫一個貪食蛇的簡單AIJavaAI
- 用 webpack 寫一個簡單的 JS SDKWebJS
- 用SwiftUI寫一個簡單頁面SwiftUI
- 用Flutter 寫一個簡單頁面Flutter
- 如何寫一個拖拽日曆元件(附原始碼)元件原始碼
- 用Python寫一個簡單的Web框架PythonWeb框架
- 用express寫個簡單的CRUDExpress
- 用Java編寫一個最簡單的桌面程式Java
- 用Python寫一個簡單的微博爬蟲Python爬蟲
- java一個月日曆Java
- 寫一個構建複雜資料的日曆元件 Kalendar元件
- 簡單寫一個eventbus
- 利用js製作簡單的動態日曆JS
- JavaScript簡單的日曆效果程式碼例項JavaScript
- 模仿KOA,用php來寫一個極簡的開發框架PHP框架
- 基於PHP的日曆程式PHP
- 手把手教你寫一個微信小程式日曆元件微信小程式元件
- 用 Go 編寫一個簡單的 WebSocket 推送服務GoWeb
- 用 C 語言寫一個簡單的 Unix Shell(1)
- 用 C 語言寫一個簡單的 Unix Shell(2)
- 用Python寫一個簡單的中文分詞器Python中文分詞
- php實現一個簡單的socketPHP
- 一個很簡單的PHP框架lyuePHP框架
- php實現一個簡單的堆PHP
- js手寫日曆JS
- js簡單日曆效果程式碼例項JS
- 用 PHP 開發一個簡單的以太坊支付系統PHP
- 手寫一個超簡單的VueVue
- 寫一個簡單的demo理解vuexVue
- 一步一步構建自己的簡單日曆控制元件 MySimpleCalendar控制元件
- 用 C 語言編寫一個簡單的垃圾回收器
- 用BCB寫一個最簡單的多執行緒 (轉)執行緒
- 一個不需要Log4Net的寫日誌的簡單方法
- 幾個簡單又實用的PHP函式PHP函式