Daniel: differenz von 2 Uhrzeiten in Minuten

Hi,
ich hab da ein problem nähmlich ich bekomme es nicht n´hin 2 uhrzeiten
so miteinander zu berechnen das ich die differenz in minuten bekomme.
also die differenz zwischen 17Uhr und 20Uhr soll mir 180 minuten geben.
die uhrzeiten stehen im Format HH:MM:SS in einer DB

  
$beginn = "17:00:00";  
$ende = "20:00:00";  
$time_beginn = mktime(substr($beginn, 0 , 1), substr($beginn, 3 , 4), substr($beginn, 6 , 7));  
$time_ende = mktime(substr($ende, 0 , 1), substr($ende, 3 , 4), substr($ende, 6 , 7));  
$time = $time_ende - $time_beginn;  
$dauer_lang = date("H-i", time($time));  
$stunden = substr($dauer_lang, 0 , 1);  
$dauer = $stunden*60 + substr($dauer_lang, 3 , 4);  

er gibt mir aber als dauer immer 62 aus. dabei sind es 2h und 60
minuten also 180 minuten. kann mir jmd von euch helfen? gibt es vll
für mein problem besser geeignet funktionen?

MfG

  1. echo $begrüßung;

    $beginn = "17:00:00";
    $time_beginn = mktime(substr($beginn, 0 , 1), substr($beginn, 3 , 4), substr($beginn, 6 , 7));

    Tritt der fehler immer noch auf, wenn du substr jeweils mit den "richtigen" (Längen-)Parametern fütterst?

    echo "$verabschiedung $name";

    1. Hi,

      Tritt der fehler immer noch auf, wenn du substr jeweils mit den "richtigen" (Längen-)Parametern fütterst?

      upsa, das ist ja die länge, da muss dann natürlich 2 hin,

      so habs geändert, komischerweise brachte er mir zuerst als diff
      15-23
      also hab ich die stunden auf 12er format geändert.

      dann viel mir auf das time() den aktuellen time() den aktuellen
      timestamp zurückgiebt. Also hab ich das rausgeschmissen.

      dann brachte er mir als differenz zeit von 17uhr bis 20uhr 4h, also hab
      ich mal von 17uhr bis 17uhr gemacht, warum bringt er mir da als
      differenz 1h?

      MfG

      1. echo $begrüßung;

        also hab ich mal von 17uhr bis 17uhr gemacht, warum bringt er mir da als differenz 1h?

        Das weiß ich momentan auch noch nicht. Wenn du allerdings mit Zeiten rechnen willst, solltest du immer die GMT-Funktionen verwenden (die beginnen mit gm), sonst hast du auch noch andere "lustige" gesetzesbedingte und andere lokal abhängige Effekte drin.

        echo "$verabschiedung $name";

        1. Hi,

          Das weiß ich momentan auch noch nicht. Wenn du allerdings mit Zeiten rechnen willst, solltest du immer die GMT-Funktionen verwenden (die beginnen mit gm), sonst hast du auch noch andere "lustige" gesetzesbedingte und andere lokal abhängige Effekte drin.

          ich denke das es so ok ist wie ich es jetzt siehe hier
          https://forum.selfhtml.org/?t=108857&m=678963
          gelöst habe. es geht dabei um eine kursverwaltung und der kurs beginnt
          zu irgendeiner uhrzeit am tag und geht nicht über 24 uhr hinaus.
          voraussichtlich werden die kurse in einem bereich zwischen 8 und 20uhr
          stattfinden. sollte ich mal weitere uhrzeit und oder datumsrechnungen
          welche über einen längeren zeitraum als 12h gehn machen müssen werde ich
          mich aber daran erinner.

          Oder siehst du etwa problem bei dieser Lösung in diesem speziellen fall?

          MfG

          1. Moin!

            es geht dabei um eine kursverwaltung

            ... *beziehungknüpf* ...

            Sind es offene IT-Kurse? Wenn ja: Hast Du Lust irgendeine http-basierte Schnittstelle zu it-schule.de zu errichten?

            MFFG (Mit freundlich- friedfertigem Grinsen)

            fastix®

            --
            Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
            1. Hi,

              Sind es offene IT-Kurse?

              was sollen offene IT-Kurse sein? Also es sind kurse aus dem IT-Bereich.
              Von der Arbeit mit Word, Excel, Photoshop etc. bis hin zu sachen um
              Windowze doesn't work Station und Linux.

              Wenn ja: Hast Du Lust irgendeine http-basierte Schnittstelle zu it-schule.de zu errichten?

              Wenn dann  müsst ich mal meinen Arbeitgeber fragen für den ich das ganze erstelle.

              MfG

              1. Hallo.

                was sollen offene IT-Kurse sein?

                Sich mit EDV befassende Kurse, die so wenig auf die individuellen Bedürfnisse eines einzelnen Kunden angelegt sind, dass jeder Interessent an ihnen teilnehmen kann. Darunter fallen die Volkshochschulkurse ebenso wie ein großer Teil der von Schulungsunternehmen angeboten Kurse. Zu erkennen sind sie häufig an veröffentlichten festen Terminen.
                MfG, at

                1. Moin!

                  Du hast prinzipiell recht. Nur:

                  Sich mit EDV befassende Kurse, die so wenig auf die individuellen Bedürfnisse eines einzelnen Kunden angelegt sind, dass jeder Interessent an ihnen teilnehmen kann.

                  Passt seit dem Jahr 2003 zumindest für meine Gegend nicht mehr. Meistens buchen irgendwelche Firmen die Seminare, falls es überhaupt Interessenten gibt, komplett und wenn sich mitten im eigentlich offenen (weil öffentlich ausgehangenen) Linux-Grundlagen-Seminar herausstellt, dass die beiden Teilnehmer vielmehr lediglich an Samba interessiert sind, dann wird eben genau das (überwiegend) gemacht.

                  Aber als Definition des Begriffes "offenes IT-Seminar" ist Deine Beschreibung goldrichtig. Zumindest in "normalen" Zeiten.

                  MFFG (Mit freundlich- friedfertigem Grinsen)

                  fastix®

                  --
                  Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
              2. Moin!

                Wenn dann  müsst ich mal meinen Arbeitgeber fragen für den ich das ganze erstelle.

                Der kann mich gerne kontaktieren. Ich fände es sehr interessant das mal mit einem Anbieter als Pilotprojekt durchzuziehen. Ihm hilft es beim Verkaufen und mir beim Projekt. Das ist doch was.

                MFFG (Mit freundlich- friedfertigem Grinsen)

                fastix®

                --
                Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
  2. Also ich hätte es wohl in etwa so gemacht:

    $foo = substr($beginn, 6, 7)+(substr($beginn, 3, 4)*60)+(substr($beginn, 1, 2)*60);
    $bar = substr($ende, 6, 7)+(substr($ende, 3, 4)*60)+(substr($ende, 1, 2)*60);

    $time = $bar-$foo;

    Gruß
    Carl

    1. Hi,
      danke für den denkanstoß, habs jetzt so gemacht:

        
      $time_beginn = substr($beginn, 0 , 2)*60 + substr($beginn, 3 , 2) + substr($beginn, 6 , 2)/60;  
      $time_ende = substr($ende, 0 , 2)*60 + substr($ende, 3 , 2) + substr($ende, 6 , 2)/60;  
      $dauer = $time_ende - $time_beginn;  
      
      

      und schon hab ichs.

      MfG

  3. Moin!

    die uhrzeiten stehen im Format HH:MM:SS in einer DB

    Wenn das Feld dann auch noch als TIME angelegt ist, und nicht etwa als VARCHAR, dann kannst du wunderbar mit den wahrscheinlich vorhandenen Datumsfunktionen der Datenbank direkt die Differenz zwischen den beiden Zeiten ausrechnen lassen - ggf. zunächst als Sekundenzahl, mit Division durch 60 wird dann eine Minutenzahl draus.

    Deinen gesamten PHP-Code kannst du dann komplett einmotten, er wird nicht benötigt.

    • Sven Rautenberg