php如何生成一年的日历表_使用php动态生成一个日历,附源码。【简单实用】

本文介绍如何使用PHP创建一个简单的动态日历功能,无需依赖外部组件。提供完整源码,通过输入日期参数,即可生成对应月份的日历表格,高亮显示当天日期。适合在开发中快速实现日历展示。
摘要由CSDN通过智能技术生成

日历在web开发中是非常常用的一个功能,网上搜也能找到一大堆日历组件,大部分是js组件。

因为再开发过程中需要使用到日历的功能,又不想下载什么日历组件。所以就自己动手写了一个简单的php生成日历的功能。

源码如下:

/*

* @动态生成一个日历

* @param 日期[2016-07-01|2017-02-01]

* @return table

*/

function create_calendar($month){

#初始化

$calendar = '';

#表头

$week_arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];

#本月共多少天

$this_month_days = (int)date('t',strtotime($month));

#本月1号星期几

$this_month_one_n = (int)date('w', strtotime($month));

//表头

$calendar .= '

foreach ($week_arr as $k => $v){

if($k == 0){

$class = ' class="sunday"';

}elseif ($k == 6){

$class = ' class="saturday"';

}else{

$class = '';

}

$calendar .= '

'.$v.'';

}

$calendar .= '

';

//表身

#计算本月共几行数据

$total_rows = ceil(($this_month_days - (7 - $this_month_one_n)) / 7) + 1;

$number = 1;

$flag = 0;

for ($row = 1;$row <= $total_rows;$row++){

$calendar .= '

';

for ($week = 0;$week <= 6;$week ++){

if($number < 10){

$numbera = '0'.$number;

}else{

$numbera = $number;

}

if(date('Ym',strtotime($month)) .$numbera == intval(date('Ymd'))){

$cell_id = ' id="today"';

}else{

$cell_id = '';

}

if($number <= $this_month_days){

if($row == 1){

if($week >= $this_month_one_n){

$calendar .= '

'.$number.'';

$flag = 1;

}else{

$calendar .= '

';

}

}else{

$calendar .= '

'.$number.'';

}

if($flag){

$number ++;

}

}else{

$calendar .= '

';

}

}

$calendar .= '

';

}

$calendar .= '

';

return $calendar;

}

id=today的就是今天的日期。

使用方法

参数直接传一个日期,date类型的。如要用17年2月份的日历,则参数传2017-02-01;如果要17年1月的则传参数2017-01-01。

$calendar = create_calendar('2017-02-01');

echo $calendar;

结果如下

7941212f432ffcfb94c80147f2e0eccd.png

样式的话需要自己手动写一下,或者直接使用bootstrap。具体效果可以参考本站的签到日历。非常简单有用的小函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值