今天我們就用php中的數組合date 做一個日歷。
先讓我們回顧一下PHP里面的date 。
1、時間戳:表示從計算機元年/UNIX紀年(0時區 1970/1/1 00:00:00)到當前事件的秒數。是一個長整形的數字。
2、取到時間戳的函數:
① time():返回當前時間的時間戳;
② mktime():根據設置的時間,返回時間戳。
設置的格式:時,分,秒,月,日,年
③ strtotime():將輸入的字符串日期轉為時間戳;
eg:echo strtotime("2017-06-02 09:42:00");
echo strtotime("July 1st, 2008 09:42:00");
echo strtotime("now");
echo strtotime("+1 day");
3、時間戳的格式化:
① 使用getdate()函數:(並不常用);
返回一個數組,數組的鍵值如下
'seconds' => int 47 秒
'minutes' => int 56 分
'hours' => int 9 小時
'mday' => int 2 一個月的第幾天
'wday' => int 5 一個周的第幾天
'mon' => int 6 數組的幾月
'year' => int 2017 年份
'yday' => int 152 一年中的第幾天
'weekday' => string 'Friday' (length=6) 字符串的英文周幾
'month' => string 'June' (length=4) 字符串的英文月份
0 => int 1496368607 原始的時間戳
② 使用date()函數:非常常用
String date(String "格式化字符串"[,int 時間戳 = time()]);
格式化的字符串:
Y:四位數年 m:月01-12 n:月1-12 d:天01-31 j:天1-31
H:時24時制 h:小時12制 i:分鍾00-59 s:秒00-59 w:星期幾0-6
A:上午AM或下午PM a:上午am或下午pm。
4、時區設置:
① 修改php.ini配置文件:
date.timezone = Etc/GMT-8
② 使用date_default_timezone_set();函數
date_default_timezone_set("Etc/GMT-8");//直接指定時區,西加東減
date_default_timezone_set("PRC");//中華人民共和國
date_default_timezone_set("Asia/Shanghai");//亞洲上海
取到當前時區設置:date_default_timezone_get();
5、了解microtime(true);取到從計算機元年到現在的微秒數;
默認顯示為0.78026400 1496372572 單位為秒,前面是小數點后部分,后面為小數
下面我們就開始寫代碼嘍!
date_default_timezone_set("PRC");
//取到 年 月 日
$time = getdate();
$mday = $time["mday"];
$mon = $time["mon"];
$year = $time["year"];
//判斷一下一年中各個月份有幾天的情況
if($mon==4||$mon==6||$mon==9||$mon==11){
$day = 30;
}elseif($mon==2){
if(($year%4==0&&$year%100!=0)||$year%400==0){
$day = 29;
}else{
$day = 28;
}
}else{
$day = 31;
}
//取到這個月的1號是第幾天,
$w = getdate(mktime(0,0,0,$mon,1,$year))["wday"];
//制作日歷的大框架。用for遍歷數組,打印出一個日歷的格式。
$date = function($day,$w){
echo "<table border='1'>";
echo "<tr><th>星期日</th><th>星期一</th><th>星期二</th><th>星期三</th><th>星期四</th><th>星期五</th><th>星期六</th></tr>";
$arr = array();
for($i=1;$i<=$day;$i++){
array_push($arr,$i);
}
if($w>=1&&$w<=6){
for($m=1;$m<=$w;$m++){
array_unshift($arr,"");
}
}
$n=0;
for($j=1;$j<=count($arr);$j++){
$n++;
if($n==1) echo "<tr>";
global $mday;
if($mday==$arr[$j-1]){
//把今天的這一天加一個顏色
echo "<td width='80px' style='background-color: greenyellow;'>".$arr[$j-1]."</td>";
}else{
echo "<td width='80px'>".$arr[$j-1]."</td>";
}
if($n==7){
echo "</tr>";
$n=0;
}
}
if($n!=7)echo "</tr>";
echo "</table>";
};
$date($day,$w);
這是效果圖。
這樣我們的一個簡單的日歷就做完了。