PHP实现简单日历类编写


Posted in PHP onAugust 28, 2020

用PHP实现日历类的编写,供大家参考,具体内容如下

calendar.class.php

<?php
/*
* 创建一个日历类
*
*
*/
 //修改默认时区
 date_default_timezone_set("PRC");
 
 class Calendar {
  private $year;
 private $month;
 private $day; //当月总天数
 private $first_week; //每月的第一天是星期几
 
 //构造函数
 function __construct() {
  $this->year = isset($_GET['year'])?$_GET['year']:date("Y");
  $this->month = isset($_GET["month"])?$_GET["month"]:date("m");
  $this->first_week = date("w", mktime(0, 0 ,0, $this->month, 1, $this->year));
  $this->day = date("t", mktime(0, 0 ,0, $this->month, 1, $this->year));
 }
 function showCalendar() {
 //  echo $this->year."年".$this->month."月".$this->first_week."天".$this->day;
   echo "<table align='center'>"; //用表格输出
   $this->chageDate("index.php"); //用于用户调整年月份
  $this->weekList();//显示星期
  $this->dayList(); //显示天数
  
  echo "</table>";
 }
 //1、显示星期
 private function weekList() {
  $week = array("日","一","二","三","四","五","六");
  echo "<tr>";
   for ($i = 0; $i < count($week); $i++) {
   echo "<th>".$week[$i]."</th>";
  }
  echo "</tr>";
 }
 //2.显示天数
 private function dayList() {
  $color = "#2ca50c";
  echo "<tr>";
  for ($i = 0; $i < $this->first_week; $i++) { //输出空格,弥补当前月空缺部分
   echo "<td bgcolor='#2ca50c'> </td>";
  }
  for ($k = 1; $i <= $this->day; $k++) {
   $i++;
   if ($k == date("d")) echo "<td id='nowd'>".$k."</td>"; //是今天,加效果
   else echo "<td bgcolor=$color>".$k."</td>";
   if ($i % 7 == 0) {
   echo "</tr><tr>"; //每7天一次换行
   if ($i % 2 == 0) $color = "#2ca50c";
   else $color = "#9ddb27"; //实现各行换色的效果
   }
  }
  while ($i % 7 != 0) { //将剩余的空格补完
   echo "<td bgcolor='#2ca50c'> </td>";
  $i++; 
  }
  echo "</tr>";
 }
  
 //3、用于用户调整天数
 private function chageDate($url="index.php") {
  echo "<tr>";
   echo "<caption><h1>".$this->year."年".$this->month."月</h1></caption>"; 
  echo "</tr>";
  echo "<tr>";
  echo "<td>"."<a href='?".$this->prevYear($this->year,$this->month)."'>"."<"."</a>";
  echo "<td>"."<a href='?".$this->prevMonth($this->year,$this->month)."'>"."<<"."</a>";
  
  echo "<td colspan='3'>";
   echo '<select οnchange="window.location=\''.$url.'?year=\'+this.options[selectedIndex].value+\'&month='.$this->month.'\'">';
    for ($year = 2038; $year >= 1970; $year--) {
    $selected = ($year == $this->year)?"selected":"";
    echo '<option '.$selected. ' value="'.$year.'">'.$year.'</option>';
    //echo '<option '.$selected.' value="'.$year.'">'.$year.'</option>';
   }
   echo "</select>";
   
  echo '<select name="month" οnchange="window.location=\''.$url.'?year='.$this->year.'&month=\'+this.options[selectedIndex].value">';
  for($month=1;$month <= 12;$month++){
   $selected1 = ($month == $this->month) ? "selected" : "";
   echo '<option '.$selected1.' value="'.$month.'">'.$month.'</option>';
  }
  echo '</select>';
  echo "</td>";
  
  
  echo "<td>"."<a href='?".$this->nextMonth($this->year,$this->month)."'>".">>"."</a>";
  echo "<td>"."<a href='?".$this->nextYear($this->year,$this->month)."'>".">"."</a>";
  echo "</tr>";
 }
 
 private function prevYear($year, $month) { //获取上一年的数据
  $year--;
  if ($year < 1970) $year = 1970;
  return "year={$year}&month={$month}";
 }
 private function prevMonth($year, $month) {
  if ($month == 1) {
   $year--;
  if ($year < 1970) $year = 1970;
  $month = 12;
  }else $month--; 
  return "year={$year}&month={$month}";
 }
 private function nextYear($year, $month) { //获取上一年的数据
  $year++;
  if ($year > 2038) $year = 2038;
  return "year={$year}&month={$month}";
 }
 private function nextMonth($year, $month) {
  if ($month == 12) {
   $year++;
  if ($year > 2038) $year = 2038;
  $month = 1;
  }else $month++; 
  return "year={$year}&month={$month}";
 }
 }

主页 index.php

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>日历显示</title>
<style>
 table {
 border:1px solid #050;
 margin: 100px auto;
 }
 th {
  width: 30px;
 background-color: #0CC;
 color: #fff;
 height: 30px;
 font-size: 20px;
 }
 #nowd {
  color: yellow;
 background: #F00;
 }
 td {
  width: 30px;
 text-align: center;
 
 height: 25px;
 color: #fff;
 }
 a {
 display: block;
 width: 35px;
 height: 35px;
 background: #0F9;
  text-decoration: none;
 text-align: center;
 line-height: 35px;
 }
 a:hover {
  background: #CF0;
 color: #fff;
 font-size: 20px;
 }
</style>
</head>
 
<body>
 <?php
 include "calendar.class.php";
 $ca = new Calendar();
 $ca->showCalendar();
 ?>
</body>
</html>

PHP实现简单日历类编写

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
用ODBC的分页显示
Oct 09 PHP
修改php.ini实现Mysql导入数据库文件最大限制的修改方法
Dec 11 PHP
Windows下安装Memcached的步骤说明
Apr 25 PHP
php学习之简单计算器实现代码
Jun 09 PHP
Linux下安装PHP MSSQL扩展教程
Oct 24 PHP
php通过baihui网API实现读取word文档并展示
Jun 22 PHP
PHP多维数组遍历方法(2种实现方法)
Dec 10 PHP
PHP调试及性能分析工具Xdebug详解
Feb 09 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
PDO::_construct讲解
Jan 27 PHP
PHP5.6.8连接SQL Server 2008 R2数据库常用技巧分析总结
May 06 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 PHP
PHP实现文件上传与下载
Aug 28 #PHP
PHP实现计算器小功能
Aug 28 #PHP
PHP实现简易图形计算器
Aug 28 #PHP
PHP实现简单的计算器
Aug 28 #PHP
php实现简易计算器
Aug 28 #PHP
有关PHP 中 config.m4 的探索
Aug 26 #PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
Aug 26 #PHP
You might like
php通过各种函数判断0和空
2020/07/04 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
Javascript 多物体运动的实现
2014/12/24 Javascript
JavaScript实现自动变换表格边框颜色
2015/05/08 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
以JavaScript来实现WordPress中的二级导航菜单的方法
2015/12/14 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
js Canvas实现圆形时钟教程
2016/09/19 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
Vuex之理解state的用法实例
2017/04/19 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
Python中用max()方法求最大值的介绍
2015/05/15 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
tensorflow使用指定gpu的方法
2020/02/04 Python
Python pip配置国内源的方法
2020/02/14 Python
python列表切片和嵌套列表取值操作详解
2020/02/27 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
Yahoo-PHP面试题4
2012/05/05 面试题
音乐表演专业毕业生求职信
2013/10/14 职场文书
高中军训感言400字
2014/02/24 职场文书
生产文员岗位职责
2014/04/05 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
项目申请汇报材料
2014/08/16 职场文书
中秋晚会活动方案
2014/08/31 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
清明节扫墓活动总结
2015/02/09 职场文书
2015年销售内勤工作总结
2015/04/27 职场文书
2019年亲子运动会口号
2019/10/11 职场文书