使用PHP制作一个简单的万年历

使用PHP制作一个简单的万年历

1、使用PHP制作日历的思路

  • 制作一个选择下拉列表框,实现对选择年月的判断;
  • 显示当前时间,并制作日历的头部;
  • new一个Calendar类,实现获取日历的边界值、计算日历的天数与样式、画日历的样式;
  • 设置样式;

2、实现的功能

  • 选择指定的年月时,可以输出当前月的日历;
  • 设置了日历样式,不属于本月的日期会低亮显示;
  • 休息日区别工作日,并且当鼠标滑过时,会显示背景颜色;

3、实现的过程

源码如下

index.php

<!DOCTYPE HTML>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html;charset=utf 8">
		<title>PHP日历</title>
		<link rel="stylesheet" href="style.css" type="text/css"/>
	</head>
	<body>
		<form method="post">
		<?php
		/**
		 * 获取请求的年份和月份
		 */
			error_reporting(E_ALL & ~E_NOTICE);   //除去 E_NOTICE 之外的错误信息
			require_once 'calendar.php';
			//new一个calendar类
			$util=new Calendar();
			//年份数组和月份数组
			$years=array(2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,2020);
			$months=array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
			//获取选择的年份
			//如果没有提交POST请求,则返回当年年份,否则,返回选择的年份
			if(empty($_POST['array_years'])){
				$year=date("Y");
			}else{
				$year=$_POST["array_years"];
			}
			//如果没有提交POST请求,则返回当前月份,否则,返回选择的月份
			if(empty($_POST['array_months'])){
				$month=date("n");
			}else{
				$month=$_POST["array_months"];
			}
			
			$calendar = $util->threshold($year, $month);//获取各个边界值
			$caculate = $util->caculate($calendar);//计算日历的天数与样式
			$draws = $util->draw($caculate);//画表格,
  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 PHP 制作的好看又简洁的万年历: ```php <?php // 获取指定年月的日历数组 function getCalendarArray($year, $month) { $daysInMonth = date('t', mktime(0, 0, 0, $month, 1, $year)); $firstDayOfWeek = date('w', mktime(0, 0, 0, $month, 1, $year)); $lastDayOfWeek = date('w', mktime(0, 0, 0, $month, $daysInMonth, $year)); $calendarArray = array(); $day = 1; for ($i = 0; $i < 6; $i++) { $week = array(); for ($j = 0; $j < 7; $j++) { if ($i == 0 && $j < $firstDayOfWeek) { $week[] = ''; } else if ($day > $daysInMonth) { $week[] = ''; } else { $week[] = $day; $day++; } } $calendarArray[] = $week; if ($day > $daysInMonth) { break; } } return $calendarArray; } // 输出日历 HTML 代码 function outputCalendar($year, $month) { $calendarArray = getCalendarArray($year, $month); $monthName = date('F', mktime(0, 0, 0, $month, 1, $year)); $prevMonthYear = $month == 1 ? $year - 1 : $year; $prevMonthMonth = $month == 1 ? 12 : $month - 1; $nextMonthYear = $month == 12 ? $year + 1 : $year; $nextMonthMonth = $month == 12 ? 1 : $month + 1; $html = '<table class="calendar">'; $html .= '<caption>' . $monthName . ' ' . $year . '</caption>'; $html .= '<thead><tr>'; $html .= '<th scope="col">Sun</th>'; $html .= '<th scope="col">Mon</th>'; $html .= '<th scope="col">Tue</th>'; $html .= '<th scope="col">Wed</th>'; $html .= '<th scope="col">Thu</th>'; $html .= '<th scope="col">Fri</th>'; $html .= '<th scope="col">Sat</th>'; $html .= '</tr></thead>'; $html .= '<tbody>'; foreach ($calendarArray as $week) { $html .= '<tr>'; foreach ($week as $day) { if ($day == '') { $html .= '<td class="blank"> </td>'; } else { $html .= '<td>' . $day . '</td>'; } } $html .= '</tr>'; } $html .= '</tbody>'; $html .= '<tfoot><tr><td colspan="7">'; $html .= '<a href="?year=' . $prevMonthYear . '&month=' . $prevMonthMonth . '"><</a>'; $html .= '<a href="?year=' . $nextMonthYear . '&month=' . $nextMonthMonth . '">></a>'; $html .= '</td></tr></tfoot>'; $html .= '</table>'; return $html; } // 获取当前年月 if (isset($_GET['year']) && isset($_GET['month'])) { $year = intval($_GET['year']); $month = intval($_GET['month']); } else { $year = date('Y'); $month = date('n'); } // 输出日历 echo outputCalendar($year, $month); ?> ``` 这段代码定义了两个函数: - `getCalendarArray($year, $month)`:输入年份和月份,返回一个二维数组,表示该月份的日历。 - `outputCalendar($year, $month)`:输入年份和月份,返回一个 HTML 表格表示的日历。 这个日历的特点是: - 使用 CSS 样式控制表格样式,使其看起来更加美观。 - 在日历上方加入了一个标题,表示当前年份和月份。 - 在日历下方加入了一个分页,可以直接跳转到上一个月或下一个月。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值