时间的循环问题:-)

pmaster 2004-12-06 07:12:12
--
-- 資料表格式: `timeslot`
--

CREATE TABLE `timeslot` (
`SlotId` int(4) NOT NULL auto_increment,
`SlotName` varchar(20) NOT NULL default '',
`SlotPeriod` smallint(2) NOT NULL default '0',
`TimeFrom` datetime default NULL,
`TimeTo` datetime default NULL,
PRIMARY KEY (`SlotId`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;

--
-- 列出以下資料庫的數據: `timeslot`
--

INSERT INTO `timeslot` VALUES (1, 'CN1', 60, '08:00', '22:00');
这是我的表结构!:-)

然后我从表中取出$d1=08:00;$d2=22:00;$h=60;还有一个值是$d3=15(这个值不是从刚才的timeslot表里提出的);
我要做一个循环,从08:00循环到22:00,循环一次就加一次$h,并把加完$h的$d2减去$d3
然后生成一个坚立的列表出来
08:00-08:45(本来是09:00的,但08:00+$h-$d3后就等于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
19:00-19:45...一直循环到$d2
...全文
89 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2004-12-07
  • 打赏
  • 举报
回复
<?php
$d1 = '08:00';
$d2 = '22:00';
$h = 60;
$d3 = 15;

//回调函数
function foo($r) {
return $r[1]*60+$r[2];
}
//转换时:分格式到分
$d1 = preg_replace_callback("/(\d+):(\d+)/","foo",$d1);
$d2 = preg_replace_callback("/(\d+):(\d+)/","foo",$d2);
//循环输出
for($i=$d1;$i<$d2;$i+=$h) {
printf("%02d:%02d - %02d:%02d<br>",floor($i/60),$i%60,floor(($i+$h-$d3)/60),($i+$h-$d3)%60);
}
?>
mynamesucks 2004-12-07
  • 打赏
  • 举报
回复
比如是08:00-08:45
我先把08:00变成0800,再加100不就是900了吗,然后因为位数<4,所以就在头上加个0
pmaster 2004-12-06
  • 打赏
  • 举报
回复
我倒,看不明白,有什么好办法没有?

那个100干什么用的?
mynamesucks 2004-12-06
  • 打赏
  • 举报
回复
这个方法不是很好,但是可以解决你的问题
还有那个55是我硬写的,因为我用100来算,你那个60里的15我想不出怎么转成100里的55
将就着用吧,我测试过,可以用

<?php

$d1 = "08:00";
$d2 = "22:00";
$d11 = eregi_replace(":", "", $d1); //把时间格式转成数字
$d12 = $d11+100; //第1个数字+100作为“-”号后的第2个数字
$d22 = eregi_replace(":", "", $d2);
while ($d12<=$d22){
$d13 = $d12-55;
if (strlen($d13)<4){ //这里考虑到如果是0900-55的话会变成845,而我要的效果是
if (strlen($d11)<4){ //0845,所以加了个判断,如果字符串长度<4,就在头上加个0
$d11 = "0".$d11;
$d13 = "0".$d13;
}
else
$d13 = "0".$d13;
}
echo substr($d11, 0, 2) . ":" . substr($d11, 2, 2) . "-" . substr($d13, 0, 2) . ":" . substr($d13, 2, 2) . "<br>"; //转回日期格式
$d11 = $d11+100;
$d12 = $d12+100;
}

?>

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧