PHP完整的日历类(CLASS)


Posted in PHP onNovember 27, 2006
<?php  
class Calendar{  
/*  
* 3water.com修正版 
*/  
var $YEAR,$MONTH,$DAY;  
var $WEEK=array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");  
var $_MONTH=array(  
"01"=>"一月",  
"02"=>"二月",  
"03"=>"三月",  
"04"=>"四月",  
"05"=>"五月",  
"06"=>"六月",  
"07"=>"七月",  
"08"=>"八月",  
"09"=>"九月",  
"10"=>"十月",  
"11"=>"十一月",  
"12"=>"十二月"  
);  
//设置年份  
function setYear($year){  
$this->YEAR=$year;  
}  
//获得年份  
function getYear(){  
return $this->YEAR;  
}  
//设置月份  
function setMonth($month){  
$this->MONTH=$month;  
}  
//获得月份  
function getMonth(){  
return $this->MONTH;  
}  
//设置日期  
function setDay($day){  
$this->DAY=$day;  
}  
//获得日期  
function getDay(){  
return $this->DAY;  
}  
//打印日历  
function OUT(){  
$this->_env();  
$week=$this->getWeek($this->YEAR,$this->MONTH,$this->DAY);//获得日期为星期几 (例如今天为2003-07-18,星期五)  
$fweek=$this->getWeek($this->YEAR,$this->MONTH,1); //获得此月第一天为星期几  
echo "<div style=\"margin:0;border:1 solid black;width:300;font:9pt\"><form action=$_SERVER[PHP_SELF] method=\"post\" style=\"margin:0\"><select name=\"month\" onchange=\"this.form.submit();\">";  
for($ttmpa=1;$ttmpa<13;$ttmpa++){//打印12个月  
$ttmpb=sprintf("%02d",$ttmpa);  
if(strcmp($ttmpb,$this->MONTH)==0){  
$select="selected style=\"background-color:#c0c0c0\"";  
}else{  
$select="";  
}  
echo "<option value=\".$ttmpb\".$select>".$this->MONTH[$ttmpb]."</option>\r\n";  
}  
echo " </select> <select name=\"year\" onchange=\"this.form.submit();\">";//打印年份,前后10年  
for($ctmpa=$this->YEAR-10;$ctmpa<$this->YEAR+10;$ctmpa++){  
if($ctmpa>2037){  
break;  
}  
if($ctmpa<1970){  
continue;  
}  
if(strcmp($ctmpa,$this->YEAR)==0){  
$select="selected style=\"background-color:#c0c0c0\"";  
}else{  
$select="";  
}  
echo "<option value=\"$ctmpa\" $select>$ctmpa</option>\r\n";  
}  
echo "</select>  
</form>  
<table border=0 align=center>";  
for($Tmpa=0;$Tmpa<count($this->WEEK);$Tmpa++){//打印星期标头  
echo "<td>".$this->WEEK[$Tmpa];  
}  
for($Tmpb=1;$Tmpb<=date("t",mktime(0,0,0,$this->MONTH,$this->DAY,$this->YEAR));$Tmpb++){//打印所有日期  
if(strcmp($Tmpb,$this->DAY)==0){ //获得当前日期,做标记  
$flag=" bgcolor='#ff0000'";  
}else{  
$flag=' bgcolor=#ffffff';  
}  
if($Tmpb==1){  
echo "<tr>"; //补充打印  
for($Tmpc=0;$Tmpc<$fweek;$Tmpc++){  
echo "<td>";  
}  
}  
if(strcmp($this->getWeek($this->YEAR,$this->MONTH,$Tmpb),0)==0){  
echo "<tr><td align=center $flag>$Tmpb";  
}else{  
echo "<td align=center $flag>$Tmpb";  
}  
}  
echo "</table></div>";  
}  
//获得方法内指定的日期的星期数  
function getWeek($year,$month,$day){  
$week=date("w",mktime(0,0,0,$month,$day,$year));//获得星期  
return $week;//获得星期  
}  
function _env(){  
if(isset($_POST["month"])){ //有指定月  
$month=$_POST["month"];  
}else{  
$month=date("m"); //默认为本月  
}  
if(isset($_POST["year"])){ //有指年  
$year=$_POST["year"];  
}else{  
$year=date("Y"); //默认为本年  
}  
$this->setYear($year);  
$this->setMonth($month);  
$this->setDay(date("d"));  
}  
}  
$D=new Calendar;  
$D->OUT();  
?> 
PHP 相关文章推荐
用PHP和ACCESS写聊天室(八)
Oct 09 PHP
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
一些常用的php简单命令代码集锦
Sep 24 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
Php图像处理类代码分享
Jan 19 PHP
PHP中使用数组实现堆栈数据结构的代码
Feb 05 PHP
php操作xml入门之xml标签的属性分析
Jan 23 PHP
深入浅析PHP的session反序列化漏洞问题
Jun 15 PHP
PHP实现动态删除XML数据的方法示例
Mar 30 PHP
多个Laravel项目如何共用migrations详解
Sep 25 PHP
php适配器模式简单应用示例
Oct 23 PHP
Laravel 验证码认证学习记录小结
Dec 20 PHP
PHP如何得到当前页和上一页的地址?
Nov 27 #PHP
PHP读写文件的方法(生成HTML)
Nov 27 #PHP
PHP date函数参数详解
Nov 27 #PHP
PHP 应用程序的安全 -- 不能违反的四条安全规则
Nov 26 #PHP
PHP中的cookie
Nov 26 #PHP
在PHP中使用与Perl兼容的正则表达式
Nov 26 #PHP
上传多个文件的PHP脚本
Nov 26 #PHP
You might like
再说下636单管机
2021/03/02 无线电
php基础知识:类与对象(3) 构造函数和析构函数
2006/12/13 PHP
劣质的PHP代码简化
2010/02/08 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
node.js中的events.emitter.once方法使用说明
2014/12/10 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
es6+angular1.X+webpack 实现按路由功能打包项目的示例
2017/08/16 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
详解小程序循环require之坑
2019/03/08 Javascript
微信小程序云开发如何使用云函数生成二维码
2019/05/18 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
2018/07/10 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
python批量将excel内容进行翻译写入功能
2019/10/10 Python
python实现超市商品销售管理系统
2019/10/25 Python
python自定义函数def的应用详解
2020/06/03 Python
python sleep和wait对比总结
2021/02/03 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
西班牙国家航空官方网站:Iberia
2017/11/16 全球购物
小学毕业感言150字
2014/02/05 职场文书
艺术学院毕业生自我评价
2014/03/02 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
党员批评与自我批评发言
2014/10/02 职场文书
党员四风问题个人对照检查材料
2014/10/26 职场文书
检讨书模板
2015/01/29 职场文书
嵌入式Redis服务器在Spring Boot测试中的使用教程
2021/07/21 Redis
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers