Avatar billede jl4511 Nybegynder
25. oktober 2006 - 22:24 Der er 9 kommentarer og
1 løsning

En sjov en, udfyld den manglende kode!

Hej Eksperter/matematikere

Her er en lille sjov en at bryde hjernen med :o)

Vi har følgende funktion:

function beregn_timer($start,$slut)
{
  * manglende kode *
  return $result;
}

$start og $slut angives som f.eks 7.15 (kvart over 7) og 14.45 (kvart i tre).
Funktionen skal så returnere hvor mange timer og minutter der er imellem, i formen hh.mm (i dette tilfælde 7.30)

Jeg har lavet en der virker, men den fylder 14 linier, og jeg er sikker på at den kan koges ned til næsten ingenting, hvis man bare tænker sig om - og det er jeg ikke i stand til pt. :-)

Er der en der kunne tænke sig at prøve kræfter med den?

På forhånd tak
Avatar billede henninghabor Nybegynder
25. oktober 2006 - 23:13 #1
<?php
function beregn_timer($start, $slut)
{
    $foerste_tidspunkt = split(",", $start);

    $andet_tidspunkt = split(",", $slut);

    $timer = floor((mktime($andet_tidspunkt[0], $andet_tidspunkt[1], 0, date("m"), date("d"), date("Y")) - mktime($foerste_tidspunkt[0], $foerste_tidspunkt[1], 0, date("m"), date("d"), date("Y"))) / 3600);

    $minutter = floor(((mktime($andet_tidspunkt[0], $andet_tidspunkt[1], 0, date("m"), date("d"), date("Y")) - mktime($foerste_tidspunkt[0], $foerste_tidspunkt[1], 0, date("m"), date("d"), date("Y"))) - ($timer * 3600)) / 60);

    return $timer . " timer og " . $minutter . " minutter";
}

echo beregn_timer("10,45", "12,15");
?>
Avatar billede mstorgaard Praktikant
25. oktober 2006 - 23:14 #2
Her er en del af et kortere kode, men der mangler lige en funktion som kan ændre et tal som 7.5 til 7.30 (:

function beregn_timer($start,$slut)
{
  $tid = explode(".",$start);
  $tid2 = explode(".",$slut);
  $result = (( $tid2[0] * 60 + $tid2[1] ) - ( $tid[0] * 60 + $tid[1] )) / 60;
  return $result;
}
Avatar billede jl4511 Nybegynder
25. oktober 2006 - 23:34 #3
Henning habor: Med en mindre korrektion fungerer din funktion som ønsket.

function beregn_timer($start, $slut)
{
  $foerste_tidspunkt = split("\.", $start);

  $andet_tidspunkt = split("\.", $slut);

  $timer = floor((mktime($andet_tidspunkt[0], $andet_tidspunkt[1], 0, date("m"), date("d"), date("Y")) - mktime($foerste_tidspunkt[0], $foerste_tidspunkt[1], 0, date("m"), date("d"), date("Y"))) / 3600);

  $minutter = floor(((mktime($andet_tidspunkt[0], $andet_tidspunkt[1], 0, date("m"), date("d"), date("Y")) - mktime($foerste_tidspunkt[0], $foerste_tidspunkt[1], 0, date("m"), date("d"), date("Y"))) - ($timer * 3600)) / 60);

  return $timer . "." . $minutter;
}

Tak for hjælpen, lægger du et svar?
Avatar billede henninghabor Nybegynder
25. oktober 2006 - 23:36 #4
Det var så lidt. Her har du svaret. :)
Avatar billede Slettet bruger
25. oktober 2006 - 23:38 #5
function beregn_timer($start,$slut) {
    $start = round((floor($start) + (($start-floor($start))/0.6)),2);
    $slut = round((floor($slut) + (($slut-floor($slut))/0.6)),2);
    return round((floor($slut-$start) + (($slut-$start-floor($slut-$start))*0.6)),2);   
}

En lidt mindre version.
Avatar billede jl4511 Nybegynder
25. oktober 2006 - 23:43 #6
Wicez: Igen med en mindre korrektion...
function beregn_timer($start,$slut) {
    $start = round((floor($start) + (($start-floor($start))/0.6)),2);
    $slut = round((floor($slut) + (($slut-floor($slut))/0.6)),2);
    return number_format(round((floor($slut-$start) + (($slut-$start-floor($slut-$start))*0.6)),2),2);
}

Den er faktisk bedre, så vil gerne "betale" for den.
Hvordan gør vi lige det?
Avatar billede Slettet bruger
25. oktober 2006 - 23:45 #7
Det er slet ikke nødvendigt. ;o)

Hvorfor vil du gerne have number_format på?
Avatar billede Slettet bruger
25. oktober 2006 - 23:45 #8
Så du altid får dine decimaler?
Avatar billede jl4511 Nybegynder
25. oktober 2006 - 23:47 #9
Fordi jeg gerne vil præsentere det som 7.30 (halv otte)
Indrømmet, det kunne jeg gøre efterfølgende - men lisså godt med det samme!

Tak for hjælpen :o)
Avatar billede Slettet bruger
25. oktober 2006 - 23:48 #10
Selv tak. Jeg håber du kunne bruge det.
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