DateTime::Diff zusammenrechnen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • DateTime::Diff zusammenrechnen

    Hey,

    mich plangt nach langer Zeit mal wieder ein Problem das ich ohne Denkanstoss nicht lösen kann.

    Ich habe ein Start und Stop Feld in der DB (DATETIME Format) und solange es sich nur um ein Eintrag handelt klappt alles auch super, aber .... klar ab 2 aufwärts gehts in die Hose.

    PHP-Code:
    while ($db liefert mir daten) {
        
    $start = new DateTime($row->time_start);
        
    $stop  = new DateTime($row->time_stop);
                
        
    $diff $start->diff($stop);
        
    $time $diff->format('%y years, %m month, %d days, %h hours, %i minutes');
    }
    return 
    $time
    Auch über eine SQL Abfrage geht es nicht.
    Code:
    SUM(TIME_TO_SEC(TIMEDIFF(time_stop, time_start)))
    2013-03-01 00:00:00 	2013-07-31 23:59:59 	302039
    Ich bin mit meinem Latein am Ende und so einfach alle DateTime:iff addieren ist auch nicht drin oder google will mich heute ärgern.

    Danke schonmal im Voraus für Hilfe und Vorschläge
    Gruß
    Uzu

    private Homepage

  • #2
    ich habe das problem jetzt ganz anders gelöst und erhalte endlich die Ergebnisse wie erwartet.

    Code:
    0 years, 4 months, 30 days, 23 hours, 59 minutes
    0 years, 1 months, 0 days, 23 hours, 59 minutes
    0 years, 1 months, 4 days, 11 hours, 49 minutes
    0 years, 0 months, 0 days, 2 hours, 9 minutes
    PHP-Code:
    function getUsedTime($uid) {
        
    $conn      $this->mysqli_conn();
        
    $time      "";
        
    $time_diff "";
        
    $uid       $conn->real_escape_string($uid);
            
        
    $sql "
        SELECT
            *,
            unix_timestamp(time_start) as start,
            unix_timestamp(time_stop) as stop
        FROM
            times 
        WHERE
            user_id = "
    .$uid.";
        "
    ;

        
    $result $conn->query($sql);
            
        while ((
    $row $result->fetch_object()) != false) {        
            
    $time    $row->stop -$row->start;
            
    $time_diff $time_diff $time;
        }
        
    $start = new DateTime();
        
    $start->setTimestamp(time());
        
    $stop  = new DateTime();
        
    $stop->setTimestamp(time()+$time_diff);
                
        
    $diff $start->diff($stop);
        
    $time $diff->format('%y years, %m months, %d days, %h hours, %i minutes');
        return 
    $time;

    Gruß
    Uzu

    private Homepage

    Kommentar

    Lädt...
    X