日期循环 设$a=TimeFrom值,$b=TimeTo值。……晕,怎么出来个60分种? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <?php$s = "08:00";$e = "19:00";$sar = explode(":", $s);$ear = explode(":", $e);$ss = $sar[0]*60*60 + $sar[1]*60;$es = $ear[0]*60*60 + $ear[1]*60;while($ss < $es){ $hour = floor($ss/3600); $minute = $ss%3600/60; $ss+=45*60; $hour1 = floor($ss/3600); $minute1 = $ss%3600/60; echo (strlen($hour) < 2 ? "0".$hour : $hour ).":".(strlen($minute) < 2 ? "0".$minute : $minute )."-".(strlen($hour1) < 2 ? "0".$hour1 : $hour1 ).":".(strlen($minute1) < 2 ? "0".$minute1 : $minute1 )."<br>"; $ss+=15*60;}?> 谢谢,keaizhong这个60是可以变化的,现在是60分钟,下次可能是30分钟:(我的意思是我在timeslot里插入了一条记录,例如TimeFrom为08:00,TimeTo为19:00,SlotPeriod为60分钟,然后我的需要就是根据这三个变量生成08:00-08:4509:00-09:4510:00-10:4511:00-11:4512:00-12:4513:00-13:4514:00-14:4515:00-15:4516:00-16:4517:00-17:4518:00-18:45 <?php/* * 生成24小时之内的时间循环 * 参数 $start_time 开始时间,类似"08:00"格式 * $end_time 结束时间,类似"08:00"格式 * $step 时间跨度,以分为单位,默认为45分 * $relax 时间间隔,以分为单位,默认为15分 * 返回 数组 */function wtime($start_time, $end_time, $step = 45, $relax = 15){ $sar = explode(":", $start_time); $ear = explode(":", $end_time); $ss = $sar[0]*60*60 + $sar[1]*60; $es = $ear[0]*60*60 + $ear[1]*60; while($ss < $es){ $hour = floor($ss/3600); $minute = $ss%3600/60; $ss+=$step*60; $hour1 = floor($ss/3600); $minute1 = $ss%3600/60; $rear[] = (strlen($hour) < 2 ? "0".$hour : $hour ).":".(strlen($minute) < 2 ? "0".$minute : $minute )."-".(strlen($hour1) < 2 ? "0".$hour1 : $hour1 ).":".(strlen($minute1) < 2 ? "0".$minute1 : $minute1 ); $ss+=$relax*60; } return $rear;}/* * 确定开始时间,结束时间和时间跨度,可以生成24小时之内的时间循环 */print_r(wtime("08:00", "19:00", 60));/*out:Array( [0] => 08:00-09:00 [1] => 09:15-10:15 [2] => 10:30-11:30 [3] => 11:45-12:45 [4] => 13:00-14:00 [5] => 14:15-15:15 [6] => 15:30-16:30 [7] => 16:45-17:45 [8] => 18:00-19:00)*/?> 不懂$start = "08:04";$step = 60;$end = date("H:i", strtotime(date("Y-m-d ").$str)+60*$step)); echo "$start-$end"; 你那个45是如何得来的?<?php$TimeFrom = '08:00';$TimeTo = '19:00';$SlotPeriod = 60;$d = date('Y-m-d ');$i = 0;do { $t = strtotime("$d$TimeFrom +$i minutes"); echo date("H:i",$t)."-".date("H:45",$t)."<br>"; $i += $SlotPeriod;}while($t < strtotime($d.$TimeTo));?> 如果$SlotPeriod = 10;呢?还是减15吗? 本地的xp,apache,怎么新建个子目录的..... 大家帮帮忙啊! mysql数据从4.1.20导入到3.23.54 乱码问题怎么解决啊? 校内网开发接口方面 100分求一思路 smarty php 的简单问题,smarty找不到文件 php页面显示乱码问题(utf8编码) 散分了,哪些PHP的论坛全站系统最好 调用上级的上级目录中的文件问题 在WIN98下怎么安装php,apache? fsocketopen()错误,请大家帮帮忙,在线等,谢谢。 PHP菜鸟错误?急在线
$s = "08:00";
$e = "19:00";
$sar = explode(":", $s);
$ear = explode(":", $e);
$ss = $sar[0]*60*60 + $sar[1]*60;
$es = $ear[0]*60*60 + $ear[1]*60;
while($ss < $es){
$hour = floor($ss/3600);
$minute = $ss%3600/60;
$ss+=45*60;
$hour1 = floor($ss/3600);
$minute1 = $ss%3600/60;
echo (strlen($hour) < 2 ? "0".$hour : $hour ).":".(strlen($minute) < 2 ? "0".$minute : $minute )."-".(strlen($hour1) < 2 ? "0".$hour1 : $hour1 ).":".(strlen($minute1) < 2 ? "0".$minute1 : $minute1 )."<br>";
$ss+=15*60;
}
?>
这个60是可以变化的,现在是60分钟,下次可能是30分钟:(
我的意思是我在timeslot里插入了一条记录,例如TimeFrom为08:00,TimeTo为19:00,SlotPeriod为60分钟,然后我的需要就是根据这三个变量生成
08:00-08:45
09:00-09:45
10:00-10:45
11:00-11:45
12:00-12:45
13:00-13:45
14:00-14:45
15:00-15:45
16:00-16:45
17:00-17:45
18:00-18:45
/*
* 生成24小时之内的时间循环
* 参数 $start_time 开始时间,类似"08:00"格式
* $end_time 结束时间,类似"08:00"格式
* $step 时间跨度,以分为单位,默认为45分
* $relax 时间间隔,以分为单位,默认为15分
* 返回 数组
*/
function wtime($start_time, $end_time, $step = 45, $relax = 15){
$sar = explode(":", $start_time);
$ear = explode(":", $end_time);
$ss = $sar[0]*60*60 + $sar[1]*60;
$es = $ear[0]*60*60 + $ear[1]*60;
while($ss < $es){
$hour = floor($ss/3600);
$minute = $ss%3600/60;
$ss+=$step*60;
$hour1 = floor($ss/3600);
$minute1 = $ss%3600/60;
$rear[] = (strlen($hour) < 2 ? "0".$hour : $hour ).":".(strlen($minute) < 2 ? "0".$minute : $minute )."-".(strlen($hour1) < 2 ? "0".$hour1 : $hour1 ).":".(strlen($minute1) < 2 ? "0".$minute1 : $minute1 );
$ss+=$relax*60;
}
return $rear;
}/*
* 确定开始时间,结束时间和时间跨度,可以生成24小时之内的时间循环
*/
print_r(wtime("08:00", "19:00", 60));
/*
out:
Array
(
[0] => 08:00-09:00
[1] => 09:15-10:15
[2] => 10:30-11:30
[3] => 11:45-12:45
[4] => 13:00-14:00
[5] => 14:15-15:15
[6] => 15:30-16:30
[7] => 16:45-17:45
[8] => 18:00-19:00
)
*/
?>
$step = 60;
$end = date("H:i", strtotime(date("Y-m-d ").$str)+60*$step)); echo "$start-$end";
<?php
$TimeFrom = '08:00';
$TimeTo = '19:00';
$SlotPeriod = 60;$d = date('Y-m-d ');
$i = 0;
do {
$t = strtotime("$d$TimeFrom +$i minutes");
echo date("H:i",$t)."-".date("H:45",$t)."<br>";
$i += $SlotPeriod;
}while($t < strtotime($d.$TimeTo));
?>