PHP 日期时间函数 PHP实现日历

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>
这样一个月的日历就做好了!




猜你喜欢

转载自blog.csdn.net/strugglin/article/details/80429864