Hallo,

Ik ben voor een website aan het berekenen of een restaurant open is. De restaurants zijn vaak tot na middernacht open, zoals 01:00, nu moet ik dus gaan kijken of de huidige tijd voor de tijd is van de sluitingstijd, enkel ondervind ik wat problemen mee. Tot 23:59 gaat het prima, maar daarna niet. Dit is mijn code op dit moment, het werkt tot 23:59, maar daarna geeft hij aan gesloten, terwijl hij nog tot 01:20 open is. In explode[1] en explode[2] zit de open tijd en gesloten tijd en daar maak ik time van.


$time = time();
$open_time = strtotime($explode[1]);
$close_time = strtotime($explode[2]);
                       
$diff_open = ($time - $open_time);
$diff_gesloten = ($time - $close_time);
                      
if ($diff_open > 0 && $diff_gesloten > 0) {
    echo "<div class='companypage__restaurantopen'>Open</div>";
}else {
    echo "<div class='companypage__restaurantclosed'>Gesloten</div>";
}
Wat zit er exact in $explode[1] en $explode[2]?
Hier zitten 2 tijden in, bijvoorbeeld: 10:00 en 16:00, deze zet ik met strtotime om naar time
Kan je daar niet gewoon ook de datum inzetten?
Bv: 24-11-2016 14:16
Dan is het veel simpeler uit te rekenen.
Nouja het punt is dat het openingstijden zijn, dus wekelijks. Ik krijg ze aangeleverd als 'array': 0;10:00-16:00;1;12:00-01:20;

Ik kan dan dus niet zien wanneer ik er een volgende dag datum aan moet hangen of niet.
Dat kun je wel deels zien, door te kijken of de tweede tijd "kleiner" is dan de eerste. Dan is dat gegarandeerd de volgende dag.

Even uit de losse pols:
<?php
$time = time();
$open_time = strtotime($explode[1]);
$close_time = strtotime($explode[2]);

if ($close_time < $open_time) {
$close_time += 86400;
}

$diff_open = ($time - $open_time);
$diff_gesloten = ($time - $close_time);
?>
True, daar heb je gelijk in. Maar, hoe kan ik er dan een datum aan geven, aangezien het wekelijks is?
Misschien een idee om te kijken of de eindtijd kleiner is dan de starttijd.
Zo ja, tel bij de eindtijd 24 uur op.
Precies wat ik in mijn voorbeeld ook schets, verrassend genoeg :-)
Goede oplossing, dankjewel had ik zelf nog niet aan gedacht! op deze manier hoef ik er geen datum aan te koppelen, maar werkt het wel! Super, ga het gelijk toepassen.
@Ben: Sorry, ik had jouw post nog niet gezien. Maar dat bedoel ik inderdaad.

[size=xsmall]Toevoeging op 24/11/2016 14:37:58:[/size]

Je moet dan wel even dit
if ($diff_open > 0 && $diff_gesloten > 0) {
veranderen in dit
if ($diff_open > 0 && $diff_gesloten < 0) {

Reageren