两天不来,又改版了……
:cool:
作者 tonyny 发布于 0000-00-00 分类:php基础编程
我写了一个计算两个时间的间隔的程序,快有300多行了。各位高手有没有简洁一点的?计算间隔时要求剔除下班时间,星期六星期天。
逛论坛交流:有没有计算两个时间的间隔的程序
谢谢,程序很精简。
但是我测试了一下
get_date("2003-11-6 8:00:00","2003-11-7 9:00:00","8:00:00","16:00:00"); 结果是“偶已经奋斗了 -7 小时 0 分钟 0 秒工作日^_^ ”
再有,上班时间有两段
临时写的 有些仓促 不知道 可不可以 试试看吧
[php]
<?
function get_date($DATE_START,$DATE_END,$start_job="08:00:00",$end_job="17:30:00")
{
$Date_2=$DATE_START;//也可以是
Date_1="2003-6-25 23:29:14";
$Date_1=$DATE_END;
$d1=strtotime($Date_1);
$d2=strtotime($Date_2);
$d3=24*60*60-(strtotime($end_job)-strtotime($start_job));
$i=$total=0;
while(($d2+$i*60*60*24)<$d1)
{
if(date("w",$d2+$i*60*60*24)==0||date("w",$d2+$i*60*60*24)==6)
{
$total=$total+1;
}
$i++;
}
$dd=60*60*24*$total;
$Hours=floor(($d1-$d2-$dd-$d3*($i-$total))/3600);
$Minites=floor((($d1-$d2-$dd-$d3*($i-$total))%3600)/60);
$Seconds=((($d1-$d2)%3600)%60);
Echo "偶已经奋斗了 $Hours 小时 $Minites 分钟 $Seconds 秒工作日^_^";
}
get_date("2003-11-6","2003-11-10","8:00:00","16:00:00");
?>
[/php]
是呀,就是后者麻烦
可以根据给出的时间算出是星期几,后面不就好弄了吗?
是太复杂了 除去上下班时间还好说 星期六星期天 就麻烦了 要判断两个时间之间有几个星期六星期天 麻烦
是条件太复杂了吗?但这在现实中很多应用呀
我的程序只计算了过去,当然如果能计算过去-现在及过去-将来更好。
我详细说明一下:
程序的作用是计算一个故障单的处理时长,如果时长超过预定的时长就给出警告。
故障单有受理时间,派单时间,处理时间,根据不同的处理部门采用处理时间与受理时间或处理时间与派单时间来计算间隔。间隔以x小时x分x秒表示。
上下班时间不固定,根据处理部门从数据库中取得。
星期六星期天不算在间隔内。如果不确定的假期也能剔除更好
预定的时长不固定,根据处理部门、故障单的性质从数据库中取得。
昨天、今天和明天
我给你先发一个计算日期的例子你研究一下吧!!
<?PHP
$Date_1="2003-7-15";//也可以是
Date_1="2003-6-25 23:29:14";
$Date_2="1982-10-1";
$Date_List_1=explode("-",$Date_1);
$Date_List_2=explode("-",$Date_2);
$d1=mktime(0,0,0,$Date_List_1[1],$Date_List_1[2],$Date_List_1[0]);
$d2=mktime(0,0,0,$Date_List_2[1],$Date_List_2[2],$Date_List_2[0]);
$Days=round(($d1-$d2)/3600/24);
Echo "偶已经奋斗了 $Days 天^_^";
?>
应该没有这么长吧
等后面的高手帮忙吧
哎呀 楼上怎么突然冒出个兄弟了
还有就是你意思都没有完全表达清楚
到底是要做什么 只是算现在——将来 过去——现在 还是 过去——将来???
倒,要求不少,等待高手吧,原来有计算间隔的程序,不过没有你要求的这么多而已。
10 条回复
回复