Avatar billede Lasse S Novice
08. januar 2005 - 20:41 Der er 11 kommentarer og
2 løsninger

sekunder_til_minutter-funktion?

Hej eksperter

Jeg sidder med en mængde sekunder, som jeg gerne vil have konverteret til et mere læsevenligt tidsformat.

Altså:
  $sekunder = 75;

Findes der ikke en indbygget funktion til at lave noget i retning af følgende:
  $tid = sec_to_time($sekunder);
som så ville give fx $time = '01:15'..

Eller er jeg nødt til at bruge en masse krudt på at dividere med 60 og 24 (timer i døgnet)???

:o) Lasse
Avatar billede jensgram Nybegynder
08. januar 2005 - 21:05 #1
function sec2min($s) {
    $h = $s % 3600;
    $m = ($s - $h * 3600) % 60;

    return sprintf('%i:%i:%i', $h, $m, $s);
}


Utestet
Avatar billede jensgram Nybegynder
08. januar 2005 - 21:08 #2
Hov, det var da en forkert sprinft.

function sec2min($s) {
    $h = $s % 3600;
    $m = ($s - $h * 3600) % 60;

    return sprintf('%d:%02d:%02d', $h, $m, $s);
}

Må give noget af det efterspurgte...
Avatar billede Lasse S Novice
08. januar 2005 - 21:12 #3
din funktion returnerer
  ::

modificeret til dette
  function sec2min($s) {
    $h = $s % 3600;
    $m = ($s - $h * 3600) % 60;
    return $h.' '.$m.' '.$s;
  #    return sprintf('%i:%i:%i', $h, $m, $s);
  }
  echo sec2min(121);

returnerer den
  121 -59 121

som jeg ikke forstår, og som i hvert fald ikke ligner fx 02:01, som jeg ville have håbet..
Avatar billede Lasse S Novice
08. januar 2005 - 21:14 #4
dit andet forslag returnerer
121:-59:121

stadig ikke helt som forventet.. hvordan kan den returnere 02:01??
Avatar billede jensgram Nybegynder
08. januar 2005 - 21:16 #5
function sec2min($s) {
    $h = $s % 3600;
    $s = $s - $h * 3600;
    $m = $s % 60;
    $s = $s - $m * 60;

    return sprintf('%d:%02d:%02d', $h, $m, $s);
}
Avatar billede jensgram Nybegynder
08. januar 2005 - 21:18 #6
Nej, jeg tåger

function sec2min($s) {
    $h = ceil($s / 3600);
    $s = $h % 3600;
    $m = ceil($s / 60);
    $s = $m % 60;

    return sprintf('%d:%02d:%02d', $h, $m, $s);
}

er vist bedre
Avatar billede jensgram Nybegynder
08. januar 2005 - 21:20 #7
fÅrk^2  (hehe)

function sec2min($s) {
    $h = floor($s / 3600);
    $s = $s - $h * 3600;
    $m = floor($s / 60);
    $s = $s - $h * 60;

    return sprintf('%d:%02d:%02d', $h, $m, $s);
}
Avatar billede jensgram Nybegynder
08. januar 2005 - 21:23 #8
function sec2min($s) {
    $h = floor($s / 3600);
    $s = $h % 3600;
    $m = floor($s / 60);
    $s = $m % 60;

    return sprintf('%d:%02d:%02d', $h, $m, $s);
}


Nu vil jeg gå ud bagved og skyde mig selv ;)
Avatar billede Lasse S Novice
08. januar 2005 - 21:46 #9
men der er stadig ballade:
  $time = 89000;
  echo sec2min($time);
giver 24:00:00 men burde give 25:00:00
og 88999 er også lig 25:00:00...
Avatar billede jensgram Nybegynder
09. januar 2005 - 08:37 #10
89000 bør give 24:43:20
88999 bør give 24:43:19

... eller har jeg misforstået noget?
Avatar billede jensgram Nybegynder
09. januar 2005 - 09:34 #11
Fuck jeg var blæst!


TESTET:

<?php
   
function sec2min($s)
{
    $h = floor($s / 3600);
    $s = $s % 3600;
    $m = floor($s / 60);
    $s = $s % 60;

    return sprintf('%d:%02d:%02d', $h, $m, $s);
}

print sec2min(88999);

?>
Avatar billede jensgram Nybegynder
23. februar 2005 - 06:55 #12
Kunne det bruges?
Avatar billede Lasse S Novice
23. februar 2005 - 09:49 #13
tja, den ligner den løkke, jeg selv havde kørende i forvejen, men takker, og points
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