26. april 2009 - 11:21
Der er
3 kommentarer og
1 løsning
Træk to datoer fra hinanden
Hej
Jeg skal lave en funktion der sikkert er meget simpel. Jeg skal lave to dropdown menuer. Den ene viser de sidste to måneder og den anden viser dage fra 1-31.
Man kan altså vælge en dato to måneder tilbage.
Efter man har valgt disse to skal jeg kunne udregne hvor mange dage der er imellem den valgte dato og NU.
Hvor i dag er 0, i går skal være -1, osv.
Men jeg stirrer mig kold på date og mktime og kan ikke lige se hvordan den skal skrues sammen selv om det sikkert er enkelt.
Husk også at man vælge ikke år. Så funktionen skal selv vide om vi er i det nuværende år eller om der er valgt en dato der ligger i det foregående år.
26. april 2009 - 13:11
#1
Du bliver nødt til at fortælle den på den ene eller anden måde hvilket år det er, ellers kan det ikke lade sig gøre. Den aner jo ikke om du vælger 26 april 2008 eller 26 april 2009.
Du skal have år med i din select.
Har lige lavet et kort eksempel til dig, som viser hvor mange dage der er imellem dags dato og en given dato. (Den fra din select bliver det)
<?
$datoChosen = "20-04-2009"; // Date fra din select af.
$datoToday = date("j-m-Y");
$splitDato1 = explode("-", $datoChosen);
$splitDato2 = explode("-", $datoToday);
$dato1 = mktime(0, 0, 0, $splitDato1[1], $splitDato1[0], $splitDato1[2]);
$dato2 = mktime(0, 0, 0, $splitDato2[1], $splitDato2[0], $splitDato2[2]);
$between = $dato2 - $dato1;
$inDays = ((($between / 60) / 60) / 24);
$inDays = explode(".", $inDays);
echo "Der er " . $inDays[0] . " imellem den valgte dato og i dag";
?>
26. april 2009 - 13:26
#2
Tak, det virker godt :)
Sad også og rodede med lave mktime på begge. Hvorfor er det nødvendigt at explode("-" på dem begge? Og er den her explode(".", $inDays) blot for at skærer det "overflødige" efter punktumk af?
Læg et svar for hjælpen
26. april 2009 - 13:47
#4
Jeg bliver nødt til at bruge explode("-", $datoChosen);, for at dele datoen op i et array. Jeg skal bruge hver enkelt værdi seperat, for at bruge mktime();
det vil dermed blive
$splitDato[0] = 20
$splitDato[1] = 04
$splitDato[2] = 2009
Det gælder også for den anden.
Og den sidste explode er bare for at fjerne det "overskydende" ja, da der ellers ville stå 10.7554 dage fx.