Avatar billede lanworld_rippie Nybegynder
25. november 2002 - 22:22 Der er 11 kommentarer og
1 løsning

LIdt hjælp til sprintf

Hey alle.. nogen som lige kan hjælpe mig engang ?

jeg skal ha lavet en tid om til 01:39 hvis den skal vise 39 minutter... men lige nu med nedestående kode skriver den 1h39m

hvordan får jeg den til at skrive 01:39 istedet for ?

        $time%=3600;
        $playtime=$playtime.sprintf("%2dm",$time/60);   
        // $time%=60;
        // $playtime=$playtime.sprintf("%02ds",$time);
        $data=substr($data,5);
        return $playtime;
Avatar billede tipsen Nybegynder
25. november 2002 - 22:41 #1
Prøv at fortælle, hvad dit input til funktionen er (Jeg går udfra ovenstående er en halv funktion, da du bruger return)
Avatar billede lanworld_rippie Nybegynder
25. november 2002 - 22:50 #2
function getnextplaytime(&$data) {
        $decnumber=ord($data[0])+(ord($data[1])<<8)+(ord($data[2])<<16)+(ord($data[3])<<24);
        $binnumber=base_convert($decnumber,10,2);
        while (strlen($binnumber) < 32) $binnumber="0".$binnumber;
        $exp=abs(base_convert(substr($binnumber,1,8),2,10))-127;
        if (substr($binnumber,0,1)=="1") $exp=0-$exp;
        $man=1;$manadd=0.5;
        for ($counter=9;$counter<32;$counter++) {
            if (substr($binnumber,$counter,1)=="1") $man+=$manadd;
            $manadd=$manadd/2;
        }
        $time=round(pow(2,$exp)*$man);
        $playtime="";
        if ($time>3600) {
            $playtime=sprintf("%2dh",$time/3600);
        }
        $time%=3600;
        $playtime=$playtime.sprintf("%02dm",$time/60);   
        $data=substr($data,5);
        return $playtime;
    }


det er sådan det hele ser ud lige i det...

og lige som den ser ud nu skriver den 1h39m og den skal kun skrive 01:39 hvordan får jeg den til det ?
Avatar billede tipsen Nybegynder
25. november 2002 - 23:06 #3
Jeg spørger lige igen - hvad er dit input til funktionen?
Avatar billede tipsen Nybegynder
25. november 2002 - 23:09 #4
Jeg går udfra den får "tid" i et eller andet nærmere defineret format?

Ydermere: Er det eneste ønskede output bare tiden i formatet "hh:mm" ?
Avatar billede lanworld_rippie Nybegynder
25. november 2002 - 23:12 #5
den henter RAW data fra en cs server... og det ser ret sort ud...

men du skal vel kun bruge den linje med den sprintf kommando ?
Avatar billede lanworld_rippie Nybegynder
25. november 2002 - 23:13 #6
ja..
Avatar billede lanworld_rippie Nybegynder
25. november 2002 - 23:13 #7
altså det henter bare en masse sort kode ud som jeg ikke er helt klar over. men har fået at vide at jeg bare skal rette i den linje...
Avatar billede tipsen Nybegynder
25. november 2002 - 23:20 #8
Prøv at give mig nogle eksempler på de inputs den kan få - så kan jeg se om jeg ser en logik i de data og de efterfølgende operationer! Når jeg ikke kender input, kan jeg heller ikke give noget kode som serverer output i et bestemt format - fordi det afhænger jo selvfølgelig af input! (Og så ser det kraftigt ud som om ovenstående kode kan simplificeres væsentligt!)
Avatar billede tipsen Nybegynder
25. november 2002 - 23:20 #9
Jeg vil vide, hvad indholdet af $data er!
Avatar billede tipsen Nybegynder
25. november 2002 - 23:38 #10
Prøv med:

  $playtime=sprintf('%02d:%02d',(int) ($time/3600), (int) (($time%3600)/60));
  $data=substr($data,5);
  return $playtime;
Avatar billede tipsen Nybegynder
25. november 2002 - 23:39 #11
eller bare:

  $data=substr($data,5);
  return sprintf('%02d:%02d',(int) ($time/3600), (int) (($time%3600)/60));

i stedet for:

        $playtime="";
        if ($time>3600) {
            $playtime=sprintf("%2dh",$time/3600);
        }
        $time%=3600;
        $playtime=$playtime.sprintf("%02dm",$time/60);   
        $data=substr($data,5);
        return $playtime;
Avatar billede tipsen Nybegynder
25. november 2002 - 23:54 #12
På samme måde, som de 8 linier kunne kortes ned til 2 har jeg på fornemmelsen, at det andet også kan kortes ned...
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