今天我们就用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);
这是效果图。
这样我们的一个简单的日历就做完了。