Php 如何计算两个日期之间的会话数(上午12点到上午12点)
我需要计算两个日期之间的会话数(上午12点到上午12点) 前Php 如何计算两个日期之间的会话数(上午12点到上午12点),php,Php,我需要计算两个日期之间的会话数(上午12点到上午12点) 前 $a='12-05-2016 11:30AM' $b='14-05-2016 9:30PM' 输出应该是6 12th 11:30AM-11:59AM -->1 12TH 12:00PM-11:59PM -->2 13TH 12:00AM-11:59AM -->3 13TH 12:00PM-11:59PM -->4 14TH 12:00AM-11:59AM -->5 14TH 12:00PM-9:30PM
$a='12-05-2016 11:30AM'
$b='14-05-2016 9:30PM'
输出应该是6
12th 11:30AM-11:59AM -->1
12TH 12:00PM-11:59PM -->2
13TH 12:00AM-11:59AM -->3
13TH 12:00PM-11:59PM -->4
14TH 12:00AM-11:59AM -->5
14TH 12:00PM-9:30PM --->6
我找不到正确的逻辑。请帮助找到所需的解决方案
您可以尝试下面的功能。。。要测试它,请继续
你找不到吗?不,你必须写。让我们看看你的尝试,然后我们将尝试从那里修复它。否则你会自欺欺人地认为你在学习编程,而实际上你在复制和粘贴。你的问题对我来说真的不清楚,你到底想做什么?@Script47我不需要代码,我只需要逻辑,怎么做?逻辑就是代码,除非你指的是伪代码?@Script47在这种情况下,他可能也指的是伪逻辑???现在,我们有了数学:Logic=code
,pseudo Logic=pseudo code
:-)
<?php
$a = '12-05-2016 11:30AM';
$b = '14-05-2016 9:30PM';
function getDatesDiffInSteps($date1, $date2){
$dateSplit1 = explode(" ", $date1); list($dA, $tA) = $dateSplit1;
$dt1 = new DateTime($date1);
$dt2 = new DateTime($date2);
$baseDateA = new DateTime($dA);
$prDate = new DateTime($date1);
$i = 1;
$iDiff = ($dt2->getTimestamp() - $dt1->getTimestamp());
$diff = $dt2->diff($dt1);
$d = $diff->d;
$h = $diff->h;
$arr = [];
$prDate->setTime(0, 0, 0);
if($iDiff > 0){
// GET THE NEAREST 12 O'CLOCK TO THE START TIME:
$noon = date_create_from_format("d-m-Y H:i", "{$dA} 11:59");
$night = date_create_from_format("d-m-Y H:i", "{$dA} 23:59");
if($noon>$dt1){
$arr[] = $dt1->format("jS h:iA") . " - " . $noon->format("H:iA") . " -->{$i}";
$prDate->setTime(12, 0, 0);
}else if($night>$dt1){
$arr[] = $dt1->format("jS h:iA") . " - " . $night->format("H:iA") . " -->{$i}";
$prDate->setTime(24, 0, 0);
}
if($d){
$h += ($d*24);
}
for($hr=0; $hr<=($h); $hr+=12){
$i++;
$lDate = $baseDateA->add(new DateInterval("PT12H"));
$sDate = $prDate->add(new DateInterval("PT11H59M59S"));
if($i < intval($h/12)+2){
$arr[] = $lDate->format("jS h:iA") . " - " . $sDate->format("h:iA") . " -->{$i}";
}else{
$arr[] = $lDate->format("jS h:iA") . " - " . $dt2->format("h:iA") . " -->{$i}";
}
}
}
return $arr;
}
var_dump(getDatesDiffInSteps($a, $b));
// PRODUCES:
array (size=6)
0 => string '12th 11:30AM - 11:59AM -->1' (length=27)
1 => string '12th 12:00PM - 11:59PM -->2' (length=27)
2 => string '13th 12:00AM - 11:59AM -->3' (length=27)
3 => string '13th 12:00PM - 11:59PM -->4' (length=27)
4 => string '14th 12:00AM - 11:59AM -->5' (length=27)
5 => string '14th 12:00PM - 09:30PM -->6' (length=27)