PHP怎样排除非上班时段?急救~~~ 例如上班时间是8点半到12点,下午上班时间是13点30到17点。并已获取开始时间和结束时间。想计算这个时段内的有效时间,排除非上班时段。请问怎么写呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 有什么需求?这问题也问的也太不着调了,写MySQL查询语句吗? 看看这个吧,不过就是时间函数的使用问题罢了PHP语言中的函数有许多种,各种应用方式不同,实现的功能也不尽相同。我们在本文种为大家总结了PHP时间戳函数,希望能作为参考学习对象。一,PHP时间戳函数获取指定日期的unix时间戳 strtotime(”2009-1-22″) 示例如下:echo strtotime(”2009-1-22″) 结果:1232553600说明:返回2009年1月22日0点0分0秒时间戳二,PHP时间戳函数获取英文文本日期时间 示例如下:便于比较,使用date将当时间戳与指定时间戳转换成系统时间(1)打印明天此时的时间戳strtotime(”+1 day”)当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 day”)) 结果:2009-01-23 09:40:25(2)打印昨天此时的时间戳strtotime(”-1 day”)当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 day”)) 结果:2009-01-21 09:40:25(3)打印下个星期此时的时间戳strtotime(”+1 week”)当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 week”)) 结果:2009-01-29 09:40:25(4)打印上个星期此时的时间戳strtotime(”-1 week”)当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 week”)) 结果:2009-01-15 09:40:25(5)打印指定下星期几的时间戳strtotime(”next Thursday”)当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25指定时间:echo date(”Y-m-d H:i:s”,strtotime(”next Thursday”)) 结果:2009-01-29 00:00:00(6)打印指定上星期几的时间戳strtotime(”last Thursday”)当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25指定时间:echo date(”Y-m-d H:i:s”,strtotime(”last Thursday”)) 结果:2009-01-15 00:00:00以上PHP时间戳函数示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date() 格式化日期时间获取指定的时间戳,实现所需要的日期时间。 你用windows的计划程序执行也可以,控制几个时间段来让系统自动执行,写个XX.bat文件执行php文件也可以的,如;D:\AppServ\php5\php.exe -q D:\AppServ\www\ceshi\b.php,保存成XX.bat文件,计划程序执行一下,把你要实现功能的程序全部放在b.php文件中, 你首先需要告知:你打算是用 php 还是 mysql 来完成 $TIME_USED = time( ) - strtotime( $BEGIN_TIME );$TIME_USED就是所用的时间time() 就是现在的时间$BEGIN_TIME 就是开始时间$END_TIME 就是结束时间现在就想把$TIME_USED的非工作时间去掉,算出真正的有效时间(上班所用的时间) 基本算法$start = array( '8:30', '12:00', '13:30', '17:00');//工作时间段$input = array( '9:30', '20:00');//输入时间段$start = array_map('strtotime', $start);$input = array_map('strtotime', $input);if($input[0] < $start[1]) { //计算开始时间 $s = max($start[0], $input[0]); $dt = $start[2] - $start[1];}else { $s = max($start[2], $input[0]); $dt = 0;}if($input[1] < $start[2]) { //计算结束时间 $e = min($start[1], $input[1]); $dt = 0;}else { $e = min($start[3], $input[1]); $dt = $start[2] - $start[1];}echo date('H:i', $e-$s-$dt); //输出结果 xuzuning写可以了 不过strtotime 这函数没写出来 只需要添加多两个变量 这两个变量一个是 设定是否是节假日 另一个则是用来 改修不固定的时间 修改下xuzuning的<?phpfunction time($Stime,$Etime){ $start = array( '8:30', '12:00', '13:30', '17:00');//工作时间段 $input = array( $Stime, $Etime);//输入时间段 $start = array_map('strtotime', $start); $input = array_map('strtotime', $input); if($input[0] < $start[1]) //计算开始时间 { $s = max($start[0], $input[0]); $dt = $start[2] - $start[1]; }else { $s = max($start[2], $input[0]); $dt = 0; } if($input[1] < $start[2])//计算结束时间 { $e = min($start[1], $input[1]); $dt = 0; } else { $e = min($start[3], $input[1]); $dt = $start[2] - $start[1]; } echo date('H:i', $e-$s-$dt); //输出结果}如果你需要其他的修改 只要把固定的数值修改成变量 然后传入你的值就可以获取时间段给分 就给 xuzuning 一个处理上传文件的页面调用一个类,这个类生有一个消耗80MB的变量 php 处理文件上传 超过post_max_size的限制如何提示 一个函数调用方面的错误,求解。 向高手求救:想用php调用vb中的方法生成ocx,用vb写得代码打印机控件(有代码),如何修改vb代码啊?[ 用户登陆的安全性问题 申请当斑竹 多谢各位老大关心,明天去面试,再问要注意点什么,散分 如何格式化文本域使文本格式不变化? 如何能不编译mysql php连接数据库 想问下自定义函数能取代类的作用不? php怎么自动转换URL中非正常字符?有内置函数吗?
PHP语言中的函数有许多种,各种应用方式不同,实现的功能也不尽相同。我们在本文种为大家总结了PHP时间戳函数,希望能作为参考学习对象。一,PHP时间戳函数获取指定日期的unix时间戳 strtotime(”2009-1-22″) 示例如下:echo strtotime(”2009-1-22″) 结果:1232553600说明:返回2009年1月22日0点0分0秒时间戳二,PHP时间戳函数获取英文文本日期时间 示例如下:便于比较,使用date将当时间戳与指定时间戳转换成系统时间(1)打印明天此时的时间戳strtotime(”+1 day”)当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 day”)) 结果:2009-01-23 09:40:25(2)打印昨天此时的时间戳strtotime(”-1 day”)当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 day”)) 结果:2009-01-21 09:40:25(3)打印下个星期此时的时间戳strtotime(”+1 week”)当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 week”)) 结果:2009-01-29 09:40:25(4)打印上个星期此时的时间戳strtotime(”-1 week”)当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 week”)) 结果:2009-01-15 09:40:25(5)打印指定下星期几的时间戳strtotime(”next Thursday”)当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25指定时间:echo date(”Y-m-d H:i:s”,strtotime(”next Thursday”)) 结果:2009-01-29 00:00:00(6)打印指定上星期几的时间戳strtotime(”last Thursday”)当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25指定时间:echo date(”Y-m-d H:i:s”,strtotime(”last Thursday”)) 结果:2009-01-15 00:00:00以上PHP时间戳函数示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date() 格式化日期时间获取指定的时间戳,实现所需要的日期时间。
time() 就是现在的时间
$BEGIN_TIME 就是开始时间
$END_TIME 就是结束时间现在就想把$TIME_USED的非工作时间去掉,算出真正的有效时间(上班所用的时间)
$input = array( '9:30', '20:00');//输入时间段$start = array_map('strtotime', $start);
$input = array_map('strtotime', $input);if($input[0] < $start[1]) { //计算开始时间
$s = max($start[0], $input[0]);
$dt = $start[2] - $start[1];
}else {
$s = max($start[2], $input[0]);
$dt = 0;
}
if($input[1] < $start[2]) { //计算结束时间
$e = min($start[1], $input[1]);
$dt = 0;
}else {
$e = min($start[3], $input[1]);
$dt = $start[2] - $start[1];
}
echo date('H:i', $e-$s-$dt); //输出结果
function time($Stime,$Etime)
{
$start = array( '8:30', '12:00', '13:30', '17:00');//工作时间段
$input = array( $Stime, $Etime);//输入时间段
$start = array_map('strtotime', $start);
$input = array_map('strtotime', $input);
if($input[0] < $start[1]) //计算开始时间
{
$s = max($start[0], $input[0]);
$dt = $start[2] - $start[1];
}else {
$s = max($start[2], $input[0]);
$dt = 0;
}
if($input[1] < $start[2])//计算结束时间
{
$e = min($start[1], $input[1]);
$dt = 0;
}
else
{
$e = min($start[3], $input[1]);
$dt = $start[2] - $start[1];
}
echo date('H:i', $e-$s-$dt); //输出结果
}
如果你需要其他的修改 只要把固定的数值修改成变量 然后传入你的值就可以获取时间段
给分 就给 xuzuning