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 相关文章推荐
PHP 中执行系统外部命令
Oct 09 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
php 判断服务器操作系统的类型
Feb 17 PHP
Yii实现MySQL多数据库和读写分离实例分析
Dec 03 PHP
php截取中文字符串函数实例
Feb 23 PHP
PHP并发多进程处理利器Gearman使用介绍
May 16 PHP
利用PHP绘图函数实现简单验证码功能的方法
Oct 18 PHP
微信 开发生成带参数的二维码的实例
Nov 23 PHP
Windows下php+mysql5.7配置教程
May 16 PHP
PHP编程实现计算抽奖概率算法完整实例
Aug 09 PHP
php 中self,this的区别和操作方法实例分析
Nov 04 PHP
Laravel 验证码认证学习记录小结
Dec 20 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设计模式 Observer(观察者模式)
2011/06/26 PHP
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
总结PHP删除字符串最后一个字符的三种方法
2016/08/30 PHP
基于jquery的3d效果实现代码
2011/03/23 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
js实现固定显示区域内自动缩放图片的方法
2015/07/18 Javascript
iscroll碰到Select无法选择下拉刷新的解决办法
2016/05/21 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
如何理解jQuery中的ajaxSubmit方法
2017/03/13 Javascript
详解在AngularJS的controller外部直接获取$scope
2017/06/02 Javascript
webpack分离css单独打包的方法
2018/06/12 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
python中的hashlib和base64加密模块使用实例
2014/09/02 Python
Scrapy抓取京东商品、豆瓣电影及代码分享
2017/11/23 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
解决Python import .pyd 可能遇到路径的问题
2021/03/04 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
美国生鲜及杂货电商:FreshDirect
2018/01/29 全球购物
幼儿园大班毕业教师寄语
2014/04/03 职场文书
我的求职择业计划书
2014/04/04 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
建党伟业观后感
2015/06/01 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
关于python中readlines函数的参数hint的相关知识总结
2021/06/24 Python