tussentijd uitrekenen met php

Status
Niet open voor verdere reacties.

Xepra

Gebruiker
Lid geworden
10 nov 2007
Berichten
38
hey allemaal,

ik heb een probleem waar ik niet uit kom.
ik heb een begintijd en een eindtijd (die komen uit een post).
daar moet ik de tussentijd van hebben.

bijv. 8:45 t/m 9:30 zou 0:45 zijn maar dat kan niet, want 100 is het maximum en komt dus 0,85 uit en dat wil ik niet ik wil met tijden rekenen. kan iemand mij helpen.

dit moet in php, niet in excel.

alvast bedankt,

xepra
 
Je zou het zo kunnen doen:

PHP:
<?php

	$sBegintijd = (isset($_GET[ 'b' ])) ? $_GET[ 'b' ] : "8:45"; // of een andere variabele waar je begintijd in zit.
	$sEindtijd = (isset($_GET[ 'e' ])) ? $_GET[ 'e' ] : "9:30"; // idem voor eindtijd
	 
	$aBegintijd = explode ( ':', $sBegintijd );
	$aEindtijd = explode ( ':', $sEindtijd );
	 
	$iVerschil = ( 60 * $aEindtijd[ 0 ] + $aEindtijd[ 1 ] ) - ( 60 * $aBegintijd[ 0 ] + $aBegintijd[ 1 ] ); // verschil in minuten
	 
	$iHours = floor ( $iVerschil / 60 );
	 
	$sVerschil = $iHours . ':' . str_pad( ( $iVerschil - ( 60 * $iHours ) ), 2, '0', STR_PAD_LEFT );

	echo 'Tussen ', $sBegintijd, ' en ', $sEindtijd, ' zit: <strong>', $sVerschil, '</strong>';

?>

Je zou ook nog timestamps en dergelijke erbij gaan halen, maar ik denk dat dit het makkelijkst is.

[EDIT]
Ik heb het hier even met $_GET gedaan en er zit totaal geen validatie van de input in, daar moet je nog wel even naar kijken.
[/EDIT]
 
Laatst bewerkt:
Dat kan eenvoudiger met strtotime(). Een voorbeeld:
PHP:
<?php
	$sBegintijd = (isset($_GET[ 'b' ])) ? $_GET[ 'b' ] : "8:45"; // of een andere variabele waar je begintijd in zit.
	$sEindtijd = (isset($_GET[ 'e' ])) ? $_GET[ 'e' ] : "9:30"; // idem voor eindtijd
	$tijd = (strtotime($sEindtijd)-strtotime($sBegintijd))/60;
	echo floor($tijd/60).":".str_pad(($tijd%60), 2, "00", STR_PAD_LEFT);
?>
Zowel de oplossing van Erik als die van mij kunnen niet omgaan met tijdstippen voor en na middernacht. Als je daar ook rekening mee wilt houden zul je er een datum bij moeten doen.
 
hey, bedank voor het beantwoorden van mijn vraag jullie hebben me een heel eind op weg geholpen.

alleen nog 1 vraag voor flitsflitsflits

(isset($_GET[ 'b' ])) ? $_GET[ 'b' ]

wat moet ik op de plaats van 'b' zetten want op de plek waar de van de tijd heb ik nu een variabelen staan die er zo uit ziet ??:?? vraagtekens zijn variabelen tijden.

alvast bedankt
 
Die twee declaraties had ik overgenomen uit het bericht van Erik die al aangaf dat het slechts ter illustratie is (aangezien je zelf gebruik maakt van de $_POST array). Wat je dus moet doen is de gewenste waarden uit $_POST valideren en vervolgens toewijzen aan $sBegintijd en $sEindtijd.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan