PHP日期时间函数一般用在按时间查询统计信息
time() -返回当前时间的时间戳
microtime() - 返回当前Unix时间戳和微秒数
注:所谓的时间戳就是从1970年1月1日 00:00:00 到当前时间的秒数
时间戳格式化函数
date() - 格式化一个本地时间/日期
/*
date()有两个参数,第一个是格式化时间戳的格式 (例如下)
第二个参数,要格式化的时间戳 如果不填写默认获取的是当前时间戳;
注:时间默认为GMT时间,与我们的时差有差距,应该设置为('PRC')
date_default_timezone_set('PRC'); 用来设置日期函数的默认时区
*/// echo date('Y-m-d H:i:s'); // 未设置时区之前 2018-5-24 03:51:53date_default_timezone_set('PRC');echo date('Y-m-d H:i:s'); // 设置时区之后 2018-5-24 09:51:53
gmdate() - 格式化一个GMT/UTC 时间/日期 ;
getdate() - 取得日期时间信息 (返回的是一个数组)
localtime() - 取得本地时间 (返回是一个索引数组,当第二个值设置为true后返回的是关联数组)
date_default_timezone_set() -设定日期函数的默认时区
date_default_timezone_get() - 获取当前的时区
mktime() - 取得一个日期的Unix时间戳
/*当 mktime() 不传参数时默认是当期时间戳
不传参数时还不如用time()函数 一般不推荐不传参数
格式应该为:(时,分,秒,月,日,年)
*/
echo mktime(12,25,3,5,24,2018); //输出 2018年5月24日 12:25:3 的时间戳
strtotime() - 将任何英文文本的日期时间描述为Unix时间戳(功能强大的很)
echo strtotime('2018-5-24 12:25:3'); //输出2018年5月24 12:25:3 的时间戳
echo strtotime('now'); //获取当前时间的时间戳
echo strtotime('-1 day') //获取前一天此时的时间戳
echo strtotime('-1 month')//获取前一个月此时的时间戳
echo strtotime('+1 day +1 year') //获取一年之后的明天的时间戳
PHP日期函数实现日历
<?php
// 打印出2018年6月的日历
/*
思路:
1.这个月有多少天
2.这个月的第一天是周几
3.这个月有几周
*/
$year = 2018;
$month = 6;
// 确定6月1日的时间戳
$firstDayIn = mktime(0,0,0,$month,1,$year);
// 查看这个月有多少天
$daysInMonth =date('t',$firstDayIn);
// 判断这个月第一天是周几
$firstDay = date('w',$firstDayIn);
/*
确定这个月有几周
应用 (总天数 + 第一天是第周几)/7
不能确保正好被7整除所以用到ceil()进行向上取整
*/
$daySum = $daysInMonth + $firstDay;
$weeks = ceil($daySum/7);
/*
可以把这个日历看成是一个二维数组
一维:代表这个月有几周
二维:代表这个周有几天
*/
$days = []; //定义一个数组
$day_tmp = 0; //定义一个变量用来存放天数的
for ($i = 0; $i<$weeks; $i++){
for($j = 0; $j<7; $j++){
/*
看上面的日历图可以看出
1.这个月第一天不一定正好是这周的第一天所以需要判断
当这个月第一天是周三时那我们前两天应该为空的
2.当这个月的总天数已经结束了后也需要进行补空
*/
if (($i==0 && $j>=$firstDay) || ($i>0 && $day_tmp<$daysInMonth)) {
$day_tmp++;
$days[$i][$j] = $day_tmp;
} else {
$days[$i][$j] = '';
}
}
} ?>
<table border="1px">
<th colspan="7"><?php echo $year."年".$month."月";?></th>
<tr>
<td>周日</td>
<td>周一</td>
<td>周二</td>
<td>周三</td>
<td>周四</td>
<td>周五</td>
<td>周六</td>
</tr>
<!-- 遍历数组输出时间 -->
<?php
foreach ($days as $week => $dayWeek) {
echo "<tr>";
foreach ($dayWeek as $day) {
echo "<td>".$day."</td>";
}
echo "</tr>";
}
?>
</table>
这样一个月的日历就做好了!