Avatar billede learner Praktikant
27. marts 2007 - 20:25 Der er 7 kommentarer og
1 løsning

Hvor mange dage til en dato

Hejsa, jeg vil gerne finde ud af hvor mange dage der er til fx 20071030

Hvordan gør man det?

Jeg har forsøgt mig lidt med date("Ymd") og strtotime() og ceil() men jeg kan ik lige finde på noget fornuftigt.

Tak :o)
Avatar billede terrak Nybegynder
27. marts 2007 - 20:52 #1
$totime = mktime(0, 0, 0, 10, 30, 2007);
$nowtime = time();

$days = round(($totime-$nowtime)/(60*60*24));

echo $days;

Viser antal hele dage til datoen du nævner. De to variabler indeholder et stort tal i sekunder, hvorfor der deles med 60 (sekunder), 60 (minutter) og 24 (døgn).

http://dk.php.net/manual/da/function.mktime.php
http://dk.php.net/manual/da/function.time.php
Avatar billede terrak Nybegynder
27. marts 2007 - 20:54 #2
Rettelse:
sekunder -> minutter
minutter -> timer

:-)
Avatar billede terrak Nybegynder
27. marts 2007 - 21:07 #3
Lidt forbedret, så den fortæller hvis datoen er passeret, da jeg går ud fra du skal bruge det til en form for countdown script. Leg selv med datoen for at se resultatet.

$totime = mktime(0, 0, 0, 10, 30, 2007);
$nowtime = mktime(0, 0, 0, date('m'), date('d'), date('Y'));

$days = round((max($totime,$nowtime)-min($totime,$nowtime))/(60*60*24));

if ($totime > $nowtime) {
echo $days.' dage til event';
} else {
echo $days.' dage siden event';
}
Avatar billede learner Praktikant
27. marts 2007 - 21:59 #4
super duper tusind tak :o)

Smider du et svar?
Avatar billede terrak Nybegynder
27. marts 2007 - 22:07 #5
Ja, hvis scriptet gør som du vil have. Hvis du kun har brugt mit første eksempel, skal du lige erstatte
$nowtime = time();
med
$nowtime = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
ellers er udregningen ikke hensigtsmæssig, da den ellers kan skrive 0 dage selv om du har fodret den med datoen til i morgen.
Avatar billede learner Praktikant
28. marts 2007 - 00:12 #6
jeg bruger:
$totime = mktime(0, 0, 0, 10, 30, 2007);
$nowtime = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
$days = ceil(($totime-$nowtime)/(60*60*24));

ceil runder nemlig altid op og det giver mening når man skal skrive der er 1 dag tilbage istedet for der er 0 dage tilbage.

Mange tak :o)
Avatar billede terrak Nybegynder
28. marts 2007 - 09:22 #7
Resultatet bliver det samme, lige meget hvilken du bruger. Du kan faktisk helt undlade at bruge nogen form for afrunding.

Tak for point :-)
Avatar billede learner Praktikant
28. marts 2007 - 11:51 #8
Selvtak :o)
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