曰历标记pHp,php日历的高效写法

标题写的吸引人了些,不过我就觉得是挺高效的,我相信

之前看到过 irlvirus 写的 《php练习代码-日历》,我觉得效率都不是很好。

date()函数结合mktime() 可以得到一切东西,技巧问题

我觉得灵活运用两者即可得到日历了,说的没有用,还是写一下可以证明

于是乎有兴趣写一下,希望分享给大家

程序测试过,是比帖子里提到的快,不知道是否我的机器的问题,也希望大家做个比较,交流一下

下面贴一下代码,包含测试代码在里面,应用可以去掉测试代码

@date_default_timezone_set('RPC');

function show_calender(){

//code by hqlulu

//date:2007-12-12

//web: http://www.aslibra.com

$starttime=microtime();

//处理请求日期

$y=  isset($_GET["y"]) ? intval($_GET["y"]) : date("Y");

$m=  isset($_GET["m"]) ? intval($_GET["m"]) : date("m");

if($m<1 || $m>12)$m=date("m");

if($y<=0)$y=date("Y");

//下个月

$nm=$m+1;

if($nm>12){

$nm=1;

$ny=$y+1;

}else{

$ny=$y;

}

//前一月

$pm=$m-1;

if($pm<1){

$pm=12;

$py=$y-1;

}else{

$py=$y;

}

//获取本月名称

$month = date("M",mktime(0, 0, 0, $m, 1, $y));

//获取本月最后一天

$lastday = date("d",mktime(0, 0, 0, $nm, 0, $ny));

//获取开始一天的星期几

$index = date("w",mktime(0, 0, 0, $m, 1, $y));

//生成日历头

echo "

- {$y} {$month} +

//处理日历

$row=0;

$day=1;

while(1){

echo "

";

if($row==0){

for($i=0;$i<=6;$i++)

if($i

echo "

 ";

else

echo "

".$day++."";

}else{

for($i=0;$i<=6;$i++)

if($day>$lastday)

echo "

 ";

else

echo "

".$day++."";

}

echo "

";

$row++;

if($day>$lastday)break;

}

echo "

";

$endtime=microtime();

$usedtime=$endtime-$starttime;

return $usedtime;

}

$run_info=array();

for($i=0;$i<10;$i++)

$run_info[]=show_calender();

print_r($run_info);

?>

得到的测试结果是:

引用

Array

(

[0] => 0.00038400000000005

[1] => 0.00030999999999998

[2] => 0.00029699999999999

[3] => 0.000303

[4] => 0.00030399999999997

[5] => 0.00034499999999998

[6] => 0.00032300000000002

[7] => 0.00033

[8] => 0.00032699999999997

[9] => 0.00032000000000004

)

文章来源:http://www.aslibra.com/blog/read.php/957.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值