tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
9
ZUGRIFFE
2131
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Ordi Ordi ist offline Rookie
    Registriert seit
    Sep 2004
    Beiträge
    6
    Hallo!

    Ich suche eine Funktion, die mir eine gegebene Sekundenanzahl in Jahre, Monate, Tage, Stunden, Minuten, Sekunden ausgibt.

    Also angenommen ich habe 31 536 000 sekunden gegeben, sollte die funktion ausgeben: 1 Jahr, 0 Monate, 0 Tage, etc.

    Hat jemand von euch eine Funktion bei der Hand oder eine Idee wie ich die Funktion realisieren kann?

    Vielen Dank im Voraus!

    Gruß,
    Ordi
     

  2. #2
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    function funktion(intSec)
    {
    arrParts = [
                [31536000,' Jahr','e'],
                [2592000,' Monat','e'],
                [86400,' Tag','e'],
                [3600,' Stunde','n'],
                [60,' Minute','n'],
                [1,' Sekunde','n']
               ];
    for(j = 0; j < arrParts.length; ++j)
        {
        strPart  = parseInt((intSec / arrParts[j][0]).toString(2)) + arrParts[j][1];
        strPart += (parseInt(intSec / arrParts[j][0]) != 1)?arrParts[j][2]:'';
        intSec   = intSec%arrParts[j][0]; arrParts[j] = strPart;
        }
    return(arrParts.join(', '));
    }
     

  3. #3
    Ordi Ordi ist offline Rookie
    Registriert seit
    Sep 2004
    Beiträge
    6
    Vielen Dank!

    Funktioniert hervorragend!

    Gruß,
    Ordi
     

  4. #4
    Ordi Ordi ist offline Rookie
    Registriert seit
    Sep 2004
    Beiträge
    6
    Stimmt doch nicht ganz...

    86501 Sekunden ergibt zum Beispiel:
    0 Jahre, 0 Monate, 1 Tag, 0 Stunden, 1 Minute, 101001 Sekunden

    Ähnliche Fehler treten noch an ähnlichen Stellen auf.

    Gibt es eine Möglichkeit diese Fehler zu korrigieren?
     

  5. #5
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Ersetze die for-Schleife mal durch:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    for(j = 0; j < arrParts.length; ++j)
        {
        strPart  = (j == arrParts.length-1)?intSec:parseInt((intSec / arrParts[j][0]).toString(2));
        strPart += arrParts[j][1];
        strPart +=(parseInt(intSec / arrParts[j][0]) != 1)?arrParts[j][2]:'';
        intSec   = intSec%arrParts[j][0]; arrParts[j] = strPart;
        }
     

  6. #6
    Ordi Ordi ist offline Rookie
    Registriert seit
    Sep 2004
    Beiträge
    6
    auch falsch, mein oben genanntes beispiel funktioniert zwar jetzt aber zum bsp 99999 sekunden ergibt: 0 Jahre, 0 Monate, 1 Tag, 11 Stunden, 101110 Minuten, 39 Sekunden.

    ich versuch zwar auch den fehler zu finden, hab aber probleme das script nachzuvollziehen.

    gruß,
    ordi
     

  7. #7
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Dann versuchs weiter
     

  8. #8
    Ordi Ordi ist offline Rookie
    Registriert seit
    Sep 2004
    Beiträge
    6
    hast du keine idee mehr?
     

  9. #9
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Das Problem ist, dass Javascript je nach Belieben ein Rechnungsergebnis auch mal in Exponentialschreibweise liefert....dann kommen merkwürdige Ergebnisse heraus, wenn damit weitergerechnet wird.

    Letzter Versuch:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    for(j = 0;j < arrParts.length; ++j)
        {
        strPart  = (String(intSec / arrParts[j][0]).match(/e/))
                        ? parseInt((intSec / arrParts[j][0]).toString(2))
                        : parseInt(intSec / arrParts[j][0]);
        strPart += arrParts[j][1];
        strPart +=(parseInt(strPart) != 1)?arrParts[j][2]:'';
        intSec   = intSec%arrParts[j][0]; arrParts[j] = strPart;
        }
    Geändert von Sven Mintel (24.09.04 um 17:35 Uhr)
     

  10. #10
    Ordi Ordi ist offline Rookie
    Registriert seit
    Sep 2004
    Beiträge
    6
    Jetzt scheint wirklich alles zu funktionieren...

    Danke für deine Mühe.
    Und wenn ich den Code verstanden habe melde ich mich wieder.

    Gruß,
    Ordi
     

Ähnliche Themen

  1. Sekunden in Stunden:Minuten:Sekunden ausgeben.
    Von reeng im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 06.05.09, 08:34
  2. Berechnung von Sekunden in Stunden und Minuten
    Von brainsucker im Forum PHP
    Antworten: 9
    Letzter Beitrag: 22.07.08, 12:13
  3. Antworten: 6
    Letzter Beitrag: 03.01.08, 11:01
  4. Antworten: 10
    Letzter Beitrag: 14.12.03, 17:58
  5. Sekunden -> Stunden:Minuten:Sekunden
    Von Sputnik im Forum PHP
    Antworten: 2
    Letzter Beitrag: 24.10.02, 09:01