首页 > php教程 > PHP源码 > 正文

一个日期类

PHP中文网
发布: 2016-05-25 17:15:16
原创
1240人浏览过

一个日期类

<?php
//创建一个日期类
class Calendar
{
	var $startDay=0;
	var $startMonth=1;
	var $dayNames=array("<font color='red' face='courier new'>Sunday</font>",
	 					 "<font color='green' face='courier new'>Monday",
	 					 "<font color='green' face='courier new'>Tuesday",
						 "<font color='green' face='courier new'>Wednesday",
						 "<font color='green' face='courier new'>Thursday",
 						 "<font color='green' face='courier new'>Friday",
						 "<font color='red' face='courier new'>Saturday");
    var $monthNames=array("<font color='maroon' size=4 face='courier new'><b>January</b></font>",
	        "<font color='maroon' size=4 face='courier new'><b>February</b></font>",
			"<font color='maroon' size=4 face='courier new'><b>March</b></font>",
			"<font color='maroon' size=4 face='courier new'><b>April</b></font>",
			"<font color='maroon' size=4 face='courier new'><b>May</b></font>",
			"<font color='maroon' size=4 face='courier new'><b>June</b></font>",
            "<font color='maroon' size=4 face='courier new'><b>July</b></font>",
			"<font color='maroon' size=4 face='courier new'><b>August</b></font>",
			"<font color='maroon' size=4 face='courier new'><b>September</b></font>",
			"<font color='maroon' size=4 face='courier new'><b>October</b></font>",
			"<font color='maroon' size=4 face='courier new'><b>November</b></font>",
			"<font color='maroon' size=4 face='courier new'><b>December</b></font>");
    var $daysInMonth = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

	function setDayNames($names)
	{
		$this->dayNames=$names;
	}
	function getDayNames()
	{
		return $this->dayNames;
	}
	function setMonthNames($names)
	{
		$this->monthNames=$names;
	}
	function getMonthNames()
	{
		return $this->monthNames;
	}

	function setStartDay($day)
	{
		$this->startDay=$day;
	}
	//获取一个开始日期的函数
	function getStartDay()
	{
		return $this->startDay;
	}
	function setStartMonth($month)
	{
		$this->startMonth=$month;
	}
	function getStartMonth()
	{
		return $this->startMonth;
	}

	function getCalendarLink($month,$year)
	{
		return "";
	}

	//声明一个获取日期链接的函数
	function getDateLink($day,$month,$year)
	{
		$link="counter.php?day=$day&month=$month&year=$year&fromcounter=1";
		return "$link";
	}
	//设置日期链接
	function getCurrentMonthView()
	{
		$d=getdate(time());
		return $this->getMonthView($d["mon"],$d["year"]);
	}
	//获取当前年份
	function getCurrentYearView()
	{
		$d=getdate(time());
		return $this->getYearView($d["year"]);
	}
	//声明一个获取指定年,月的函数
	function getMonthView($month,$year)
	{
		return $this->getMonthHTML($month,$year);
	}
	//声明一个获取指定年的月份信息的函数
	function getYearView($year)
	{
		return $this->getYearHTML($year);
	}
	//获取每月的天数
	function getDaysInMonth($month,$year)
	{
		if($month<1 || $month>12)
		{
			return 0;
		}
		$d=$this->daysInMonth[$month-1];
		if($month==2)
		{
			if($year%4==0)
			{
				if($year%100==0)
				{
					if($year%400==0)
					{
						$d=29;
					}
				}
				else
				{
					$d=29;
				}
			}
		}
		return $d;
	}
	//声明一个获取月份的getMonthHTML函数
	function getMonthHTML($m,$y,$showYear=1)
	{
		$s="";
		$a=$this->adjustDate($m,$y);
		$month=$a[0];
		$year=$a[1];
		$daysInMonth=$this->getDaysInMonth($month,$year);
		$date=getdate(mktime(12,0,0,$month,1,$year));
		$first=$date['wday'];
		$monthName=$this->monthNames[$month-1];
		$prev=$this->adjustDate($month-1,$year);
		$next=$this->adjustDate($month+1,$year);
		if($showYear==1)
		{
			$prevMonth=$this->getCalendarLink($prev[0],$prev[1]);
			$nextMonth=$this->getCalendarLink($next[0],$next[1]);
		}
		else
		{
			$prevMonth="";
			$nextMonth="";
		}

		$header=$monthName.(($showYear>0) ? " <font color='orange'><b>".$year : "</b></font>");

$s.="<table class='calendar' border=4 cellspacing=4 cellpadding=4 align=center bordercolor=blue";
$s.="<tr>";
$s.="<td align='center' valign='top'>".(($prevMonth=="") ? " " : "<a href='$prevMonth'><<</a>")."</td>";
$s.="<td align='center' valign='center' class='calendarHeader' colspan='5'>$header</td>";
$s.="<td align='center' valign='top'>".(($nextMonth=="") ? " " : "<a href='$nextMonth'>>></a>")."</td>";
		$s.="</tr>";
		$s.="<tr>";
$s.="<td align='center' width=70 class='calendarHeader'>".$this->dayNames[($this->startDay)%7]."</td>";
$s.="<td align='center' width=70 class='calendarHeader'>".$this->dayNames[($this->startDay+1)%7]."</td>";
$s.="<td align='center' width=70 class='calendarHeader'>".$this->dayNames[($this->startDay+2)%7]."</td>";
$s.="<td align='center' width=70 class='calendarHeader'>".$this->dayNames[($this->startDay+3)%7]."</td>";
$s.="<td align='center' width=70 class='calendarHeader'>".$this->dayNames[($this->startDay+4)%7]."</td>";
$s.="<td align='center' width=70 class='calendarHeader'>".$this->dayNames[($this->startDay+5)%7]."</td>";
$s.="<td align='center' width=70 class='calendarHeader'>".$this->dayNames[($this->startDay+6)%7]."</td>";
		$s.="</tr>";

		/********************************有些不解*************************************************/
		$d=$this->startDay+1-$first;
		while($d>1)
		{
			$d-=7;
		}
		$today=getdate(time());
		while($d<=$daysInMonth)
		{
			$s.="<tr>";
			for($i=0;$i<7;$i++)
			{
$class=($year==$today['year'] && $month==$today['mon'] && 
$d==$today['mday']) ? "calenderToday" : "calendar";
				$s.="<td class='$class' align='center'>";
				if($d>0 && $d<=$daysInMonth)
				{
					$link=$this->getDateLink($d,$month,$year);
					$mtime=mktime();
					$dnow=date("d",$mtime);
					$mnow=date("m",$mtime);
					if($dnow==$d && $mnow==$month)
					{
						$s.=(($link=="") ? $d : "<b>
			<a href='$link'><font face='courier new' color='red'>$d</font></a></b>");

					}
					else
					{
						$s.=(($link=="") ? $d : "<a href='$link'>
					<font face='courier new' color='blue'>$d</font></a>");

					}

				}
				else
				{
					$s.=" ";
				}
				$s.="</td>";
				$d++;
			}
			$s.="</tr>";
		}
		/***************************************************************************************/
		$s.="</table>";
		return $s;
	}

	//声明一个获取年份的HTML
	function getYearHTML($year)
	{
		$s="";
		$prev=$this->getCalendarLink(0,$year-1);
		$next=$this->getCalendarLink(0,$year+1);
		$s.="<table class='calendar' border='1'>";
		$s.="<tr>";
		$s.="<td align='center' valign='top'>".(($prev=="") ? " " : 
		"<a href='$prev'><<</a>")."</td>";
		$s.="<td class='calendarHeader' vlign='top' align='center'>".(($this->startMonth>1) ? 
		$year."-".($year+1) : $year)."</td>";
		$s.="<td align='center' valign='top'>".(($next=="") ? " " : 
		"<a href='$next'>>></a>")."</td>";
		$s.="</tr>";
		$s.="<tr>";
		$s.="<td class='calendar' valign='top'>".$this->getMonthHTML(0+$this->startMonth,$year,0)."
		</td>";
		$s .= "<td class=\"calendar\" valign=\"top\">" . 
		$this->getMonthHTML(1 + $this->startMonth, $year, 0) ."</td>";
        $s .= "<td class=\"calendar\" valign=\"top\">" . 
        $this->getMonthHTML(2 + $this->startMonth, $year, 0) ."</td>";
        $s .= "</tr>";
        $s .= "<tr>";
        $s .= "<td class=\"calendar\" valign=\"top\">" . 
        $this->getMonthHTML(3 + $this->startMonth, $year, 0) ."</td>";
        $s .= "<td class=\"calendar\" valign=\"top\">" . 
        $this->getMonthHTML(4 + $this->startMonth, $year, 0) ."</td>";
        $s .= "<td class=\"calendar\" valign=\"top\">" .
         $this->getMonthHTML(5 + $this->startMonth, $year, 0) ."</td>";
        $s .= "</tr>";
        $s .= "<tr>";
        $s .= "<td class=\"calendar\" valign=\"top\">" . 
        $this->getMonthHTML(6 + $this->startMonth, $year, 0) ."</td>";
        $s .= "<td class=\"calendar\" valign=\"top\">" . 
        $this->getMonthHTML(7 + $this->startMonth, $year, 0) ."</td>";
        $s .= "<td class=\"calendar\" valign=\"top\">" . 
        $this->getMonthHTML(8 + $this->startMonth, $year, 0) ."</td>";
        $s .= "</tr>";
        $s .= "<tr>";
        $s .= "<td class=\"calendar\" valign=\"top\">" .
         $this->getMonthHTML(9 + $this->startMonth, $year, 0) ."</td>";
        $s .= "<td class=\"calendar\" valign=\"top\">" . 
        $this->getMonthHTML(10 + $this->startMonth, $year, 0) ."</td>";
        $s .= "<td class=\"calendar\" valign=\"top\">" . 
        $this->getMonthHTML(11 + $this->startMonth, $year, 0) ."</td>";
        $s .= "</tr>";
        $s .= "</table>";
        return $s;
    }

	//声明一个日期调整函数
	function adjustDate($month,$year)
	{
		$a=array();
		$a[0]=$month;
		$a[1]=$year;
		while($a[0]>12)
		{
			$a[0]-=12;
			$a[1]++;
		}
		while($a[0]<=0)
		{
			$a[0]+=12;
			$a[1]--;
		}
		return $a;
	}

}

class MyCalendar extends Calendar
{
	function getCalendarLink($month,$year)
	{
		$s=getenv('SCRIPT_NAME');	//相当于$_SERVER['SCRIPT_NAME']
		return "$s?month=$month&year=$year";
	}
}




?>
登录后复制

                   

 以上就是一个日期类的内容,更多相关内容请关注PHP中文网(www.php.cn)!

音疯
音疯

音疯是昆仑万维推出的一个AI音乐创作平台,每日可以免费生成6首歌曲。

音疯 84
查看详情 音疯

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号