Zeitausgabe gerundet

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

  • Zeitausgabe gerundet

    ich möchte für ein kleines Sicherheitssystem u.a. einen Zeitstempel übergeben von einem Server zum nächsten.

    Damit beide nicht immer 100% synchron laufen müssen, soll der übergebene Zeitstempel gerundet sein auf 5 min

    Also:
    Login um 10:50 Uhr -> Übergabezeit = 1050
    Login um 10:51 Uhr -> Übergabezeit = 1050
    Login um 10:52 Uhr -> Übergabezeit = 1050
    Login um 10:53 Uhr -> Übergabezeit = 1055
    Login um 10:54 Uhr -> Übergabezeit = 1055
    Login um 10:55 Uhr -> Übergabezeit = 1055

    nun kenn ich zwar die Date() - Funktion und auch round() etc, aber mit fällt nichts ein, wie ich einen sauberen 5 Minuten takt hinbekomme.

    Habt Ihr Ideen? Notfalls auch Umwege? Ich bin nämlich nicht soo der PHP Crack..

  • #2
    PHP-Code:
    function returnRoundTime($timestamp){
      
    $time explode(':',date('H:i',$timestamp));
      if(
    $time[1][1] == 5){
        return 
    $time;
      }else{
        if(
    $time[1][1] < 3){
          
    $time[1][1] = '0';
        }else{
          
    $time[1][1] = '5'
        
    }
      }
      return 
    $time;

    so in der Richtung würde ich das mal probieren

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Oder
      PHP-Code:
          $gerundet 100 * (round(($minuten 100) * 20) / 20); 
      Gruss
      H2O

      Kommentar


      • #4
        Danke euch beiden!

        aber beides klappt nicht so ganz...

        Ersteres springt bei 10:18 Uhr nicht auf "1020".

        Und beide Ideen berücksichtigen nur die Minuten. Was aber ist um 11:58 Uhr? Ich selbst habe aber auch noch nichts gefunden..

        Kommentar


        • #5
          PHP-Code:
          function returnRoundTime($timestamp){
            
          $time date('i',$timestamp);
            if(
          $time[1] < 3){
              return 
          $timestamp $time[1]*60;
            }elseif(
          $time[1] > && $time[1] < 5){
              return 
          $timestamp + (5-$time[1])*60;
            }elseif(
          $time[1] == 5){
              return 
          $timestamp;
            }elseif(
          $time[1] > && $time[1] < 8){
              return 
          $timestamp - ($time[1]-5)*60;
            }elseif(
          $time[1] > && time[1] > 7){
              return 
          timestamp + (10-$time[1])*60;
            }

          Mal so probiert? Du musst dann den return einfach noch mit date() in die gewünschte Form bringen. Hoff, dass ich diesmal alle Fälle abgedeckt habe

          Gruss

          tobi
          Zuletzt geändert von jahlives; 10.03.2008, 14:40.
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Ich bin eigentlich davon ausgegengen, dass du das Aufteilen und Zusammenfügen von Stunden und Minuten selber schaffst. Und der andere Fall ist mit tatsächlich entgangen, da ich die 5er Rundung sonst vor allem im Zusmmenhang mit Geldbeträgen benutzt habe. So seis halt:
            PHP-Code:
            function roundMin($zeit){
                list(
            $stunden$minuten) = explode(':'$zeit);

                
            $minuten 100 * (round(($minuten 100) * 20) / 20);
                if (
            $minuten == 60){
                    
            $stunden ++;
                    
            $minuten 0;
                    if (
            $stunden == 24){
                        
            $stunden 0;
                    }
                }
                return 
            sprintf("%02d%02d"$stunden$minuten);

            Gruss
            H2O

            Kommentar


            • #7
              Original geschrieben von jahlives
              PHP-Code:
              function returnRoundTime($timestamp){
                
              $time date('i',$timestamp);
                if(
              $time[1] < 3){
                  return 
              $timestamp $time[1]*60;
                }elseif(
              $time[1] > && $time[1] < 5){
                  return 
              $timestamp + (5-$time[1])*60;
                }elseif(
              $time[1] == 5){
                  return 
              $timestamp;
                }elseif(
              $time[1] > && $time[1] < 8){
                  return 
              $timestamp - ($time[1]-5)*60;
                }elseif(
              $time[1] > && time[1] > 7){
                  return 
              timestamp + (10-$time[1])*60;
                }

              Mal so probiert? Du musst dann den return einfach noch mit date() in die gewünschte Form bringen. Hoff, dass ich diesmal alle Fälle abgedeckt habe

              Gruss

              tobi
              Vielen Dank für's neu machen!

              Hier scheint er allerdings Probleme bei Minute 3 und 4 zu haben (oder auch 23, 24) Auch weiss ich nicht, was der letzte elseif abfragt. >5 und >7 ..

              Alles andere klappt wunderbar. auch mit der Folgestunde.

              ---------------------------------------------


              Original geschrieben von H2O
              Ich bin eigentlich davon ausgegengen, dass du das Aufteilen und Zusammenfügen von Stunden und Minuten selber schaffst. Und der andere Fall ist mit tatsächlich entgangen, da ich die 5er Rundung sonst vor allem im Zusmmenhang mit Geldbeträgen benutzt habe. So seis halt:
              PHP-Code:
              function roundMin($zeit){
                  list(
              $stunden$minuten) = explode(':'$zeit);

                  
              $minuten 100 * (round(($minuten 100) * 20) / 20);
                  if (
              $minuten == 60){
                      
              $stunden ++;
                      
              $minuten 0;
                      if (
              $stunden == 24){
                          
              $stunden 0;
                      }
                  }
                  return 
              sprintf("%02d%02d"$stunden$minuten);

              Danke dir sehr! Bisher klappt das so.. was ich noch nicht genau weiss, sind die Minuten vor der nächsten Stunde.. aber in 30 min wissen wir mehr..

              Kommentar


              • #8
                Hier scheint er allerdings Probleme bei Minute 3 und 4 zu haben (oder auch 23, 24) Auch weiss ich nicht, was der letzte elseif abfragt. >5 und >7 ..
                Eigentlich sollte dieser Fall doch im 1. elseif abgehandelt werden
                Der letzte Fall fängt die Fälle ab in denen auf einer 10-er aufgerundet werden sollte.
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  Original geschrieben von H2O
                  Ich bin eigentlich davon ausgegengen, dass du das Aufteilen und Zusammenfügen von Stunden und Minuten selber schaffst. Und der andere Fall ist mit tatsächlich entgangen, da ich die 5er Rundung sonst vor allem im Zusmmenhang mit Geldbeträgen benutzt habe. So seis halt:
                  PHP-Code:
                  function roundMin($zeit){
                      list(
                  $stunden$minuten) = explode(':'$zeit);

                      
                  $minuten 100 * (round(($minuten 100) * 20) / 20);
                      if (
                  $minuten == 60){
                          
                  $stunden ++;
                          
                  $minuten 0;
                          if (
                  $stunden == 24){
                              
                  $stunden 0;
                          }
                      }
                      return 
                  sprintf("%02d%02d"$stunden$minuten);


                  Diese Idee schafft auch den Stundenwechsel..

                  Danke!

                  Beiden, wohl gemerkt!
                  .. Eure Köpfe möcht' ich manches mal haben

                  Kommentar


                  • #10
                    Diese Idee schafft auch den Stundenwechsel..
                    Schafft aber meine Idee auch *heul heul*
                    Nur musst du bei meiner Version den Timestamp mit date() wieder in die gewünschte Form bringen
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Original geschrieben von Luthiels
                      Diese Idee schafft auch den Stundenwechsel..
                      Die schafft auch den Tageswechsel

                      Original geschrieben von jahlives
                      Nur musst du bei meiner Version den Timestamp mit date() wieder in die gewünschte Form bringen
                      und vorher zuerst in einen Timestamp umwandeln.
                      Aber nicht traurig sein
                      Gruss
                      H2O

                      Kommentar


                      • #12
                        Original geschrieben von H2O
                        Die schafft auch den Tageswechsel
                        ich hatte nicht vor, das heute auszutesten und glaube es ungesehen


                        Danke Euch beiden!

                        Kommentar

                        Lädt...
                        X