PHP日历的算法

 1 <?php
 2 if (function_exists(‘date_default_timezone_set‘)) {
 3     date_default_timezone_set(‘Asia/Chongqing‘);
 4 }
 5 $date = isset($_GET[‘date‘]) ? $_GET[‘date‘] : date(‘Y-m-d‘);
 6 $date = getdate(strtotime($date));
 7 $end = getdate(mktime(0, 0, 0, $date[‘mon‘] + 1, 1, $date[‘year‘]) - 1);
 8 $start = getdate(mktime(0, 0, 0, $date[‘mon‘], 1, $date[‘year‘]));
 9 $pre = date(‘Y-m-d‘, $start[0] - 1);
10 $next = date(‘Y-m-d‘, $end[0] + 86400);
11 $html = ‘<table border="1">‘;
12 $html .= ‘<tr>‘;
13 $html .= ‘<td><a href="‘ . $PHP_SELF . ‘?date=‘ . $pre . ‘">-</a></td>‘;
14 $html .= ‘<td colspan="5">‘ . $date[‘year‘] . ‘;‘ . $date[‘month‘] . ‘</td>‘;
15 $html .= ‘<td><a href="‘ . $PHP_SELF . ‘?date=‘ . $next . ‘">+</a></td>‘;
16 $html .= ‘</tr>‘;
17 $arr_tpl = array(0 => ‘‘, 1 => ‘‘, 2 => ‘‘, 3 => ‘‘, 4 => ‘‘, 5 => ‘‘, 6 => ‘‘);
18 $date_arr = array();
19 $j = 0;
20 for ($i = 0; $i < $end[‘mday‘]; $i++) {
21     if (!isset($date_arr[$j])) {
22         $date_arr[$j] = $arr_tpl;
23     }
24     $date_arr[$j][($i+$start[‘wday‘])%7] = $i+1;
25     if ($date_arr[$j][6]) {
26         $j++;
27     }
28 }
29 foreach ($date_arr as $value) {
30     $html .= ‘<tr>‘;
31     foreach ($value as $v) {
32         if ($v) {
33             if ($v == $date[‘mday‘]) {
34                 $html .= ‘<td><b>‘ . $v . ‘</b></td>‘;
35             } else {
36                 $html .= ‘<td>‘ . $v . ‘</td>‘;
37             }
38         } else {
39             $html .= ‘<td> </td>‘;
40         }
41     }
42     $html .= ‘</tr>‘;
43 }
44 $html .= ‘</table>‘;
45 echo $html;
46 ?>
时间: 2024-10-01 05:14:01

PHP日历的算法的相关文章

关于日历的算法

相信很多前端的朋友都做过日历之类的一些控件什么的,其实核心的算法就是算月份的最后一天究竟是28.29.30还是31,这样的东西,可以看如下代码: 1.日历算法之“日” //根据参数一跟参数二的年月计算该月有多少天,返回就是该月的天数, // 一月份对0,二月份对应1,如此类推,是从0开始 var countDays=function(year, month) { var days_in_months = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30,

VS工具制作控制台日历中算法的启发

前些天的学习任务是利用VS工具编码实现控制台显示任意年份和月份对应的日历.因为关系到年份和月份,很容易考虑到润年的情况,故功能需求中对于润年的判断及相对应月份天数的判断利用多个for循环和if判断均可轻易实现.但作为该任务最难也是最重要的一点是,当月日历会承接上月的星期而显示一定数量的空白,如图所示: 这个功能的实现,需要找到每个月空白的规律.在没有提示的情况下,萨摩观察了多个月的规律,得到这样的关系:设一只1900年1月1号前为1个空白,则该月末有5*7-1-当月天数即35-1-31=3个空白

日历小算法:

<?php echo "<table align='center' border='1'>"; echo "<th style='background-color:green;'>日</th>"; echo "<th style='background-color:green;'>一</th>"; echo "<th style='background-color:

自定义日历模态插件编程总结

一.任务要求: 根据式样demo,点击按钮,在本视图弹出一个模态对话框,显示自定义日历,选择日期,日历标题进行相应的变化,点击对话框最下边确定按钮,将当前选择的日期传递回去 二.任务分析: 1.实现样式的确定: 主要包括 :合理控件和视图的选取    控件和视图的布局和层级设计    模态弹出效果的实现类型和实现方式 难点:模态效果的制作     设计模态层级过程中的点击阴影部分,能够实现的根视图和当前视图的替换 模态效果制作难点: ios7 之后,iOS 的模态效果默认是弹出的为全屏,即pre

我的OC成长之路(复习之日期与时间)

注意: 1.计算当月内的日历 计算一个月内总共有几天: // 获取当月的天数 - (NSInteger)getNumberOfDaysInMonth { NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; // 指定日历的算法 NSDate * currentDate = [NSDate date]; // 这个日期可以你自己给定 NSRange range =

页面效果简单做(不断收集更新)

简介:有自己写的,也有网上看到的,即使是别人写的也会对其改动,或添加注释,并保持统一的编码风格,便于阅读.目标是不用库即可完成,简单做,能够阐述逻辑和原理清楚即可,因此可能考虑不是最周详的,包括跨浏览器的问题,如果你打算使用在项目中使用最好测试清楚,还可能要进一步修改之. 注意:打算提供在线例子的,但短时间内没有静态空间,所以例子的事情要稍等一阵子.已提供在线例子. 1.简易拖放效果 使用了 DOM 1 的方式登记事件,其实无必要 addEventListener,因为根据鼠标事件,同一时刻通常

iOS开发零碎知识点

记录一些常用和不常用的iOS知识点,防止遗忘丢失.(来源为收集自己项目中用到的或者整理看到博客中的知识点),如有错误,欢迎大家批评指正:如有好的知识点,也欢迎大家联系我,添加上去.谢谢! 一.调用代码使APP进入后台,达到点击Home键的效果.(私有API) [[UIApplication sharedApplication] performSelector:@selector(suspend)]; suspend的英文意思有:暂停; 悬; 挂; 延缓; 二.带有中文的URL处理. 大概举个例子

js实现日历的简单算法

最近有用到日历可需要编辑文本的日历,为了绑定数据的方便,所以用js写了一套日历,其实思想也是很简单. 实现步骤如下: 1:首先取得处理月的总天数 JS不提供此参数,我们需要计算.考虑到闰年问题会影响二月份的天数,我们先编写一个判断闰年的自编函数: function is_leap(year) {   return (year%100==0?res=(year%400==0?1:0):res=(year%4==0?1:0));} 2:接着定义一个包含十二个月在内的月份总天数的数组: m_days=

蓝桥杯 算法提高 5-3日历

这题算水题吧,但我还是放上来了,因为觉得自己写的代码很有美感(要点脸可以吗...) 问题描述 已知2007年1月1日为星期一.设计一函数按照下述格式打印2007年以后(含)某年某月的日历,2007年以前的拒绝打印.为完成此函数,设计必要的辅助函数也是必要的. 样例输入 一个满足题目要求的输入范例.例: 2050 3 样例输出 与上面的样例输入对应的输出.例: 数据规模和约定 输入数据中每一个数的范围. 例:年 2007-3000,月:1-12. ---------分割线--------- 1 #