Hoe zou je een functie kunnen maken die op een website aangeeft hoeveel uur en minuten er nog te gaan zijn alvorens het 18:00 uur is. Ik wil dit schrijven zodat ik kan aangeven wanneer de courier mijn klant zijn pakketje komt ophalen. Die komt namelijk elke dag om 18:00 uur.

Ik hoop dat jullie me op weg kunnen helpen.
Hoi Mr Ark, ik wil het server-side doen, dan weet ik i.i.g. zeker dat de tijd altijd klopt. Vandaar dat ik een php oplossing zoek en niet een javascript en/of Ajax script..

of zo-iets:
<?php
$verschil = nog_te_gaan('18:00:00');

echo $verschil;

function nog_te_gaan($tijd, $m_nu=null)
{
$m_nu = (empty($m_nu)?makeDatetimeObject('now'):$m_nu);
list($H, $i, $s) = explode(':', $tijd);
if ($m_nu->format('H') >= $H) // indien je iets anders gebruikt dan "18:00:00", ook met minuten en/of seconden die niet 0 zijn, zou je daar ook op moeten controleren
{
$bestemming = mktime($H, $i, $s, $m_nu->format('m'), $m_nu->format('d')+1, $m_nu->format('Y'));
}
else
{
$bestemming = mktime($H, $i, $s, $m_nu->format('m'), $m_nu->format('d'), $m_nu->format('Y'));
}
$verschil = $bestemming - strtotime($m_nu->format('Y-m-d H:i:s'));
$s = $verschil % 60;
$i = ( ($verschil-$s) / 60 ) % 60 ;
$H = ( ($verschil-$s-60*$i) / 3600 );

return sprintf('%02d:%02d:%02d', $H, $i, $s); // eventueel return je het onder een ander formaat
}
function makeDatetimeObject($datum_string)
{
try
{
return new DateTime($datum_string, new DateTimeZone('Europe/Berlin'));
}
catch (Exception $e)
{
return new DateTime("now", new DateTimeZone('Europe/Berlin'));
}
}

?>

(kan waarschijnlijk efficiƫnter, maar het werkt, volgens mij)
Edit: functienaam aangepast, die van SanThe klonk beter dan de mijne
Super daar kan ik wat mee, bedankt...
Op dagen waarop het uur aangepast wordt, zal het misschien een foute waarde geven.

Reageren