Avatar billede encorez Nybegynder
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.
Avatar billede webweaver Praktikant
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";
   
?>
Avatar billede encorez Nybegynder
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
Avatar billede webweaver Praktikant
26. april 2009 - 13:42 #3
Svar :)
Tak for point.
Avatar billede webweaver Praktikant
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.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester