Hallo allemaal,

Ik heb een database waarin allerlei gemeten tijden staan (die tijden worden door een programma opgeslagen), echter ze worden als seconden opgeslagen als ik ze daarna wil weergeven op een website komt het heel raar over

Voorbeeld
2:44.30(2 min, 44 sec, 30 honderdste) wordt weergegeven als 164300.

Welke code kan ik gebruiken om dit getal weer als 2:44.30 te tonen

alvast bedankt,

Mvg,

Robert
Even een stukje code uit een oud project gehaald. Hier kan je vast wel wat mee:


<?php
define('SECONDE', 1);
define('MINUUT', 60*SECONDE);
define('UUR', 60*MINUUT);
define('DAG', 24*UUR);

// Bezochtte tijd
function timetostr($tijd) {
    $result['dag'] = (int) ($tijd/DAG);
    $tijd = $tijd % DAG;
    $result['uur'] = (int) ($tijd/UUR);
    $tijd = $tijd % UUR;
    $result['minuut'] = (int) ($tijd/MINUUT);
    $tijd = $tijd % MINUUT;
    $result['seconde'] = $tijd;
    if ($result['dag'])
      $output[] = $result['dag'] . ($result['dag'] == 1 ? ' dag' : ' dagen');
    if ($output || $result['uur'])
      $output[] = $result['uur'] . ($result['uur'] == 1 ? ' uur' : ' uren');
    if ($output || $result['minuut'])
      $output[] = $result['minuut'] . ($result['minuut'] == 1 ? ' minuut' : ' minuten');
    $output[] = $result['seconde'] . ($result['seconde'] == 1 ? ' seconde' : ' seconden');
    $return = join($output, ', ');
    $return = preg_replace('/^(.*), ([^,]+)$/', '\\1 en \\2', $return);
    return $return;
  }
?>


Gebruik als volgt:

<?php
$secondes = 164300;
echo timetostr($secondes); 
?> 

K ga er mee aan de slag, laat het weten als het werkt!

Bedankt

Toevoeging op 27/02/2014 17:25:22:

Ik krijg de volgende melding

Warning: preg_replace(): No ending delimiter '/' found in (regel 24 van jouw code)
Ik heb het net aangepast in het codeblok.

Er stond een slash verkeerd in de expressie en de replace. Ik had het ondanks het een oude code is even aangepast, omdat de 'ereg'-functie niet meer werkt, en heb er een 'preg' van gemaakt, maar die aanpassing was een klein beetje fout gegaan.

Maar probeer eens opnieuw.
Het werkt nu wel! Maar er komt een iets te groot getal uit, namelijk: 1 dag, 21 uren, 38 minuten en 20 seconden.

Mijn PHP kennis is (nog) niet zo groot, maar jouw script gaat van dag tot seconden. En de tijd die ik heb zijn de laatste 3 getallen honderdste, en zal er niet gebruik van dagen, uren worden gemaakt

Ik weet niet of het veel werk is om de code aan te passen, anders probeer ik dat eerst of je moet al zeggen dat deze nog van een iets te hoog niveau is haha.

Robert
Als ik er zo naar kijk wordt het in duizendste van seconden opgeslagen, niet in seconden. Wel handig om te weten, omdat het script van Aar wel uitgaat van seconden. De eerste define moet je dan nog aanpassen naar

<?php
define('SECONDE', 1000 );
?>
Ja dit lijkt in de buurt te komen, alleen zit ik nog met de opmaak

Notice: Undefined variable: output in .. on line 12

Notice: Undefined variable: output in .. on line 14
2 minuten en 44300 seconden
Het script van Aar doet helemaal niet aan duizendste van seconden. Op zich niet zo moeilijk om dat erin te verwerken, maar dat laat ik graag aan Aar (of jezelf) over :-)

De output foutmelding kan je verhelpen door aan het begin van de functie die even te definieren als een array:

<?php
function timetostr($tijd) {
  $output = array();
  //etc
?>

Reageren