PHP计算时间 详细有追加 急!急!急!

$timea=explode(",",$_MODULE[yytime]); //获取预先设置时间
$time1=$timea[0] //获取预先设置上班时间
$time2=$timea[1] //获取预先设置下班时间
$time3=date('H:i')//获取系统时间
if($time3>$time1 && $time3<$time2)
{
echo '正在营业,欢迎光临';
}
else
{
echo '已经下班了,请明天再来';
}
如果下班时间是第二天的2:30怎么办啊,请写出详细步骤,详细有追加
按1楼的思路整理下
$timea=explode(",",$_MODULE[yytime]);
if($timea[1]>$timea[0]){
$timea1=date('Y-m-d ').$timea[0];
$timea2=date('Y-m-d ').$timea[1];
$time3=date('Y-m-d H:i');
if($time3>$timea1 && $time3<$timea2){
echo '正在营业中';
}else{
echo '已经下班了';
}
}else{
$timeb1=date('Y-m-d ').$timea[0];
$nextday=date('d')+"1";
$timeb2=date('Y-m-').$nextday." ".$timea[1];
$time3=date('Y-m-d H:i');
if($time3>$timeb1 && $time3<$timeb2){
echo '正在营业中';
}else{
echo '已经下班了';
}
}
这样又不对,发现如果下班时间是第二天的话,就永远不会下班了 @--@
是哪里错了,能帮忙改下吗?先谢谢了

你的时间$time1、$time2、$time3等不要只取时分,将日期一起带上就可以完整的比较了,哪怕下班时间在第二天也不会影响。
比如上班时间在2011.07.07 08:00:00;下班时间设定为:2011.07.08 2:30:00,那么只要系统时间在这二者之间,就可以显示: '正在营业,欢迎光临'。
假设操作员设定时只输入几点几分,比如上班时间:8:00:00;下班时间:2:30:00,那么实际上他隐含的意思是下班在第二天的2:30,而不会是当天。对此,可以将程序设定为必须输入日期;或者,程序在得到用户输入的时间后自动加上一个当前的日期,也就是不仅仅用时间作为参数,一定要加上日期。追问

下班时间在第二天
如果加个当前的日期的话,上班时间也会自动加上当前的日期,这样又回到同一天了,而且下班时间比上班时间还早
如果单独给下班时间的日期加1天,那么系统时间永远赶不上下班时间,就永远不会下班了,
反之单独给上班时间的日期减一天,就永远不会上班了
能详细说下这个日期应该怎么加吗?先谢谢了
希望能完整的给写出来

追答

假定用户只输入上下班时分,不包含日期,算法大概为:
if 下班时间 < 上班时间 -- 很显然应该代表的是第二天
下班时间 = (当天日期 + 1) + 下班时间

上班时间 = 当天日期 + 上班时间

如此,下班时间是某个具体的值,系统时间肯定可以超过它的。
比如用户输入:上班时间:8:00;下班时间:2:30,那么加上日期后结果为:上班:2011.07.29 08:00:00;下班:2011.07.30 02:30:00
当系统到达明天早上2:31时,系统时间为:2011.07.30 02:31.00,通过比较时间,知道该下班了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-29
这个关键看你的时间存储形式。
先抛开你的格式,可以这么设计,按美军传统格式'0730'代表7点半,'0230'代表凌晨2点半。(美军的时间格式本来就是为计算机而生,所以最适合用于计算机处理)
<?php
$open_time='1930'; //上工时间,下午7点半
$close_time='0230';//下工时间, 凌晨2点半
$current_time=date('Hi');//当前时间
$p=strcmp($open_time,$close_time);//更安全地比较字符串
if($p<0){
//当天上下班
if(strcmp($current_time,$open_time)>=0 and strcmp($current_time,$close_time)<=0) {
echo '正在营业中';
}else{
echo '已经下班了';
}
}elseif($p>0){
//第二天下班,逻辑换成or
if(strcmp($current_time,$open_time)>=0 or strcmp($current_time,$close_time)<=0){
echo '正在营业中';
}else{
echo '已经下班了';
}
}else{
echo '24小时营业';
}本回答被提问者采纳
第2个回答  2011-07-29
$time3=date('Y-m-d H:i');
if($time3>$timea1 && $time3<$timea2){
echo '正在营业中';
}else if($time3>$time2){
echo '已经下班了';
}
else{
echo '你上班早了';
}
}