strtotime() subtrahiert keine Stunden

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

  • strtotime() subtrahiert keine Stunden

    [FONT=Cambria]Hallo habe mein Problem ja schon im Titel geschildert. Folgende Situation, ich bekomme 2 Strings die ich mit hilfe von strtotime() wandel und dann subtrahiere. Komischerweise kommt aber immer eine Std. zuviel dabei raus :-) Wenn ich später die Pausezeit(handelt sich um ein einfaches Zeiterfassungssystem) abziehe passiert das gleiche. Er rechnet die Minuten richtig aber die Stunden bleiben unverändert. Habe hier gerade schon mal im Forum gesucht, aber leider keine Lösung gefunden. Hier mal mein Code:

    date_default_timezone_set('Europe/Berlin');
    function zeitberechnung($a, $b) {
    $anfang = strtotime($a);
    $ende = strtotime($b);
    $zeit = $ende - $anfang;

    return date("H:i:s", $zeit);
    }

    die Zeit liegt so 11:59:59 vor. Hoffe mein Problem wird deutlich
    [/FONT]

  • #2
    Zeig mal konkrete Testdaten, wie sie reinkommen und rausgehen.

    Kommentar


    • #3
      Zeitstempel - Zeitstempel ergibt eine Zeitspanne. Klar, dass das nicht unbedingt passt. Wie sehen die Zeitstempel denn aus? Hast du mal nen paar Beispiele?

      Kommentar


      • #4
        Beachte:
        PHP-Code:
        date_default_timezone_set('Europe/Paris');

        echo 
        '<h1>testdaten</h1>';
        echo 
        date("Y-m-d H:i:s",  strtotime('11:59:59')).'<br>';
        echo 
        date("Y-m-d H:i:s",  strtotime('01:00:00')).'<br>';


        echo 
        '<h1>Kaputtes Ergebnis</h1>';
        $ergebnis strtotime('11:59:59') - strtotime('01:00:00');
        echo 
        date("Y-m-d H:i:s",$ergebnis).'<br>';


        echo 
        '<h1>Richtige Rechnung</h1>';
        $ergebnis strtotime('11:59:59 -1 HOURS');
        echo 
        date("Y-m-d H:i:s",$ergebnis).'<br>'
        Wir werden alle sterben

        Kommentar


        • #5
          testdaten

          also ganz normale Bürozeiten halt inder Form:

          08:00:00 - 16:00:00
          dann noch die Pausenzeit
          00:45:00

          aus diesen 3 soll die netto Arbeitszeit einfach errechnet werden. Das gelingt mir leider nur nicht wirklich :-) Vielen Dank schon mal für die Antworten

          Kommentar


          • #6
            Das in Unix Timestamps "umzurechnen", wäre eher unsinnig.

            Wenn du nicht über Tagesgrenzen hinaus rechnen musst, dann machst du aus 16:00:00 einfach 16*60*60 + 0 * 60 + 0 Sekunden, aus den anderen Werten ebenso - und rechnest die Differenz dann wieder in Stunden:Minuten:Sekunden um (Modulo-Operator ist dabei hilfreich).
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Ein etwas ungewöhnlicher Tipp - Mysql kann wunderbar mit Zeiten und Datum rechnen und zwar sehr direkt.

              Bei einigen Dingen mach ich mir das sehr bequem und verwende dann einfach Mysql (da wird noch nicht einmal eine Tabelle nötig).

              Beispielansatz:

              SELECT CAST( '16:00:00' AS TIME ) - CAST( '08:00:00' AS TIME ) AS Arbeitszeit

              Kommentar


              • #8
                @wahsaga, super danke so mache ich das. Vielen Dank für Eure Hilfe!

                Kommentar


                • #9
                  Zitat von piratos Beitrag anzeigen
                  Ein etwas ungewöhnlicher Tipp - Mysql kann wunderbar mit Zeiten und Datum rechnen und zwar sehr direkt.
                  Von MySQL war bisher nicht die Rede - und wenn das gar nicht im Spiel ist, es jetzt für diese Berechnung mit rein zu bringen ... da würde ich sagen, ein etwas ungewöhnlicher Tipp.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Es gibt halt auch andere Möglichkeiten an die man nicht so schnell denkt.

                    Kommentar

                    Lädt...
                    X