PHP实现简单日历类编写

2020-10-10 0 559

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实现简单日历类编写 http://www.ox520.com/22588.html

常见问题

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务