例如 时间
1.2019-08-09 14:00:13 到 2019-08-09 21:00:13
2.判断时段0点到7点 7点到18点 在这段时间内 出现的秒数
如何精准实现,求告知思路,谢谢
例如 时间
1.2019-08-09 14:00:13 到 2019-08-09 21:00:13
2.判断时段0点到7点 7点到18点 在这段时间内 出现的秒数
如何精准实现,求告知思路,谢谢
/*
* i don't know what i'm writing
* try it maybe it will work
* */
public function tryIt()
{
$start = 0; //开始时段
$end = 7; //结束时段 为0 要处理成24
$tmp_1 = strtotime('2019-08-09 14:00:13');
$tmp_2 = strtotime('2019-08-09 21:00:13');
$stop = true;
$arr2 = [];
while($stop)
{
$arr2[] = date('Y-m-d H:00:00',$tmp_1);
if( ( $tmp_1 += 3600 ) >= $tmp_2)
{
$stop = false;
}
}
$seconds = 0;
foreach($arr2 as $k2 => $v2)
{
$v2 = strtotime($v2);
$that = (int) date("H",$v2);
if( $that >= $start && $that < $end )
{
if($k2 == 0)
{
var_dump("开始---".$this->startTime);
var_dump("节点开始---".date('Y-m-d H:i:s',$v2));
var_dump("相差秒数---".(strtotime($this->startTime) - $v2));
//第一次特殊处理 因为可能不是整点开始的
$this_seconds = 3600 - ( strtotime($this->startTime) - $v2 );
}else if($k2 == (count($arr2)-1) ) {
//最后一个也特殊处理 因为有可能不够一小时
$this_seconds = strtotime($this->endTime) - $v2;
}else{
$this_seconds = 3600;
}
$seconds += $this_seconds;
}
}
//so ! it's really work O(∩_∩)O
dump($seconds);
}