Avatar billede fixbabe Nybegynder
15. marts 2007 - 18:09 Der er 11 kommentarer og
2 løsninger

Tids funtion med time()

Jeg søger en måde at lave en tids funktion via time() i en drop down.

Meningen er at folk via drop down vælger et start tidspunkt eks 19.15 og info gemmes så i databasen.

Hvordan udregner jeg tiden fra personen vælger/gemmer til klokken er 19.15? Dvs der skal regnes ud hvor mange sekunder der er fra der gemmet til det tidspunkt som personen har valgt.

Håber mit spm er forståeligt ellers må i sige til.
Avatar billede spideregg Nybegynder
15. marts 2007 - 18:33 #1
Denne funktion gør hvad du beder om:

function timediff($hour,$minute) {
  return mktime($hour,$minute) - time();
}

For at udregne hvor langt tid der er til 19.15 kaldes den som følger:

timediff(19,15)
Avatar billede spideregg Nybegynder
15. marts 2007 - 18:44 #2
Jeg ved ikke nøjagtigt hvad du skal bruge funktionen til, men du skal være opmærksom på at der er naturligvis er nogle komplikationer ved tidspunkter som ligger efter midnat.

Hvis klokken f.eks. er 23.59, så vil timediff(0,1) *ikke* returnere 120 (antal sekunder til 00.01 efter midnat). Den vil derimod returnere -86280 (antal sekunder til 00.01 samme døgn). At tallet er negativt betyder at det valgte tidspunkt ligger i fortiden.
Avatar billede fixbabe Nybegynder
15. marts 2007 - 19:18 #3
Hmm ja det kan give problemer.

Jeg skal bruge det til en side hvor folk kan kan "bestille" en service til et bestemt tidspunkt.
Avatar billede spideregg Nybegynder
15. marts 2007 - 21:35 #4
Ok. Så skal vi nok ud i noget hvor der genereres en liste af et antal fremtidige tidspunkter som så kan vælges fra dropdown-menuen? F.eks. hvert fulde kvarter det næste døgn? Eller hvad har du behov for?
Avatar billede fixbabe Nybegynder
15. marts 2007 - 21:37 #5
hver kvarter er fint, 18.00, 18.15, 18.30 osv
Avatar billede spideregg Nybegynder
15. marts 2007 - 21:50 #6
Og hvor lang skal listen være? Hvordan skal den begrænses? Alle tidspunkter i det kommende døgn? Eller kun de 10 næste f.eks.?
Avatar billede fixbabe Nybegynder
15. marts 2007 - 21:54 #7
Kun dagen idag hvis det er muligt, så undgår man også problemet som du beskriver herover. Og hvis ikke det fungere så det kommende døgn.
Avatar billede spideregg Nybegynder
15. marts 2007 - 23:57 #8
Denne funktion vil generere ønskede liste af tidspunkter og returnere den som et array:

function timelist() {
    $time = time();
    $list = array();
    for ($time = mktime(strftime("%H", $time) * 1, ceil(strftime("%M", $time) / 15) * 15, 0); $time < mktime(23, 59, 59); $time += 15 * 60) {
        $list[] = $time;
    }
    return $list;
}


Prøv f.eks. at skrive den ud med:

foreach(timelist() as $time) {
    echo(strftime("%H.%M", $time) . ": $time<br>\n");
}

Her i det sidste kvarter før midnat vil listen være tom.
Avatar billede fixbabe Nybegynder
16. marts 2007 - 19:49 #9
Hvordan får jeg den lavet til en drop down?

Jeg har lige testet det og det fungere som det skal, bortset fra at selv om klokken var mere end 19,45 så kunne man vælge 19,45
Avatar billede spideregg Nybegynder
16. marts 2007 - 21:35 #10
Er du sikker? Det sker ikke på min server. Er du sikker på at det var serverens ur du så på?
Avatar billede fixbabe Nybegynder
18. marts 2007 - 10:13 #11
Jeg fandt fejlen, min servers tid var ikke helt det samme som min computers :) Jeg takker mange gange for hjælpen, forsat god weekend.
Avatar billede fixbabe Nybegynder
18. marts 2007 - 14:25 #12
Hvordan regner jeg tilbage? hvis altså jeg har $time siden som jeg ønsker klokken på?
Avatar billede spideregg Nybegynder
22. marts 2007 - 22:23 #13
Med strfttime(), ligesom i eksemplet ovenfor:

echo(strftime("%H.%M", $time);
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