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 相关文章推荐
Smarty+QUICKFORM小小演示
Feb 25 PHP
PHP中使用gettext来支持多语言的方法
May 02 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
Jul 02 PHP
thinkPHP中验证码的简单使用方法
Dec 26 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
PHP遍历目录文件的常用方法小结
Feb 03 PHP
laravel学习笔记之模型事件的几种用法示例
Aug 15 PHP
PHP命令Command模式用法实例分析
Aug 08 PHP
php ajax confirm 删除实例详解
Mar 06 PHP
PHP设计模式之组合模式定义与应用示例
Feb 01 PHP
Laravel配合jwt使用的方法实例
Oct 25 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在线打包程序源码
2008/07/27 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
网上应用的一个不错common.js脚本
2007/08/08 Javascript
json 实例详细说明教程
2009/10/31 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
Node.js 使用流实现读写同步边读边写功能
2017/09/11 Javascript
详解Vue-cli代理解决跨域问题
2017/09/27 Javascript
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
2019/06/19 Javascript
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
vue中音频wavesurfer.js的使用方法
2020/02/20 Vue.js
Vue通过getAction的finally来最大程度避免影响主数据呈现问题
2020/04/24 Javascript
JS 创建对象的模式实例小结
2020/04/28 Javascript
python分割和拼接字符串
2013/11/01 Python
python学习之面向对象【入门初级篇】
2017/01/21 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
python re模块findall()函数实例解析
2018/01/19 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
python实现从wind导入数据
2019/12/03 Python
基于python使用tibco ems代码实例
2019/12/20 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
如何卸载python插件
2020/07/08 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
法国高保真音响和家庭影院商店:Son Video
2019/04/26 全球购物
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
学年末自我鉴定
2014/01/21 职场文书
社区清明节活动总结
2014/07/04 职场文书
党员批评与自我批评材料
2014/10/14 职场文书
写给老师的感谢信
2015/01/20 职场文书
2015年教师教学工作总结
2015/04/28 职场文书