У меня есть сценарий для отображения рабочих часов в течение трех дней с сегодняшнего дня. Скрипт работает нормально, но теперь я хочу показать, открыты мы в данный момент или закрыты.
Если текущее время позже времени закрытия СЕГОДНЯ ($ openingsuur_vandaag [1]), я хотел бы отобразить «ЗАКРЫТО ".
Начнем со скрипта:
<?php
$i = 0;
$periodes = array();
$periodes[$i]['start'] = '2020-01-01';
$periodes[$i]['stop'] = '2020-12-31';
$periodes[$i]['open'] = array(null,"10:00","09:00","09:00","09:00","09:00","10:00");
$periodes[$i]['dicht'] = array(null,"16:00","10:00","18:00","18:00","14:00","15:00");
$periodes[$i]['behalve'] = array();
$periodes[$i]['behalve'][0]['dag'] = "2020-06-01";
$periodes[$i]['behalve'][0]['open'] = null;
$periodes[$i]['behalve'][0]['dicht'] = null;
$i++;
echo getOpeningsuren(time(), $periodes);
function getOpeningsuren($date, $periodes)
{
$resultaat = '';
$a = date("d-m-Y");
$b = date("d-m-Y",strtotime('tomorrow'));
$c = date("d-m-Y",strtotime('tomorrow + 1 day'));
$m_nu = new datum();
$m_morgen = new datum();
$m_morgen->add(0,0,1);
$m_overmorgen = new datum();
$m_overmorgen->add(0,0,2);
$openingsuur_vandaag = getOpeningsuur($m_nu, $periodes);
$openingsuur_morgen = getOpeningsuur($m_morgen, $periodes);
$openingsuur_overmorgen = getOpeningsuur($m_overmorgen, $periodes);
$resultaat = $resultaat . $a. ' '. ($openingsuur_vandaag[0] == null ? 'gesloten' :
$openingsuur_vandaag[0].' - '. $openingsuur_vandaag[1].' uur') .'<br>';
$resultaat = $resultaat . $b. ' '. ($openingsuur_morgen[0] == null ? 'gesloten' :
$openingsuur_morgen[0].' - '. $openingsuur_morgen[1].' uur') .'<br>';
$resultaat = $resultaat . $c. ' '. ($openingsuur_overmorgen[0] == null ? 'gesloten' :
$openingsuur_overmorgen[0].' - '. $openingsuur_overmorgen[1].' uur') .'';
return $resultaat;
}
function getOpeningsuur($date, $periodes)
{
$periodestart = new datum();
$periodestop = new datum();
foreach ($periodes as $periode)
{
$periodestart->setDatetime($periode["start"] ." 00:00:00");
$periodestop->setDatetime($periode["stop"] ." 00:00:00");
if ($date->getTime() < $periodestart->getTime())
continue;
if ($date->getTime() > $periodestop->getTime())
continue;
foreach ($periode['behalve'] as $uitzondering)
{
if ($date->getDate() == $uitzondering['dag'])
{
return array($uitzondering['open'], $uitzondering['dicht'] );
}
}
return array($periode['open'][ $date->dag_vd_week() ], $periode['dicht'][ $date->dag_vd_week() ] );
}
return array(null, null);
}
class datum
{
function datum( $tijd=0 )
{
($tijd ? $tijd=$tijd : $tijd = time() );
$this->dagen_kort = array("zo", "ma", "di", "wo", "do", "vr", "za" );
$this->setTime( $tijd );
}
var $jaar;
var $maand;
var $dag;
var $uur;
var $minuut;
var $seconde;
var $dagen_kort;
function setTime( $time )
{
$this->jaar = date("Y", $time);
$this->maand = date("m", $time);
$this->dag = date("d", $time);
$this->uur = date("H", $time);
$this->minuut = date("i", $time);
$this->seconde = date("s", $time);
}
function getTime()
{
return mktime($this->uur, $this->minuut, $this->seconde, $this->maand, $this->dag, $this->jaar);
}
function setDatetime($datetime)
{
$dt = explode (" ", $datetime);
list($this->jaar, $this->maand, $this->dag) = explode("-", $dt[0]);
list($this->uur , $this->minuut, $this->seconde) = explode(":", $dt[1]);
}
function getDate()
{
return str_pad($this->jaar, 4, "0", STR_PAD_LEFT) .'-'. str_pad($this->maand, 2, "0", STR_PAD_LEFT)
.'-'. str_pad($this->dag, 2, "0", STR_PAD_LEFT);
}
function dag_vd_week()
{
return date("w", $this->getTime());
}
function setVars($jaar=-1, $maand=-1, $dag=-1, $uur=-1, $minuut=-1, $seconde=-1)
{
($jaar > -1 ? null : $this->jaar = $jaar);
($maand > -1 ? null : $this->jaar = $maand);
($dag > -1 ? null : $this->jaar = $dag);
($uur > -1 ? null : $this->jaar = $uur);
($minuut > -1 ? null : $this->jaar = $minuut);
($seconde > -1 ? null : $this->jaar = $seconde);
}
function add($jaar=0, $maand=0, $dag=0, $uur=0, $minuut=0, $seconde=0)
{
$nieuwe_tijd = mktime($this->uur + $uur, $this->minuut + $minuut, $this->seconde + $seconde, $this-
>maand + $maand, $this->dag + $dag, $this->jaar + $jaar);
$this->setTime($nieuwe_tijd);
}
}
?>
Во-первых, мое решение было, но не работает: - (:
$OFFICETIME = date("h:i"); // current time
if ($openingsuur_vandaag[1] > $OFFICETIME ) { // today's closing time - current time
echo "closed";
}
else{echo "open";}