Ankündigung

Einklappen
Keine Ankündigung bisher.

Zeit bis 24 Uhr mit Timestamp ausrechnen

Einklappen

Neue Werbung 2019

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

  • Zeit bis 24 Uhr mit Timestamp ausrechnen

    Hi

    Ich tüftel schon seit Stunden und je mehr ich drüber nachdenke, desto mehr verknotet sich mein Gehirn :-/ Ich hoffe auf eure Hilfe

    Ich lese einen Timestamp aus meiner Datenbank aus. Beispiel: $timestamp = 1498753520

    Nun möchte ich in Sekunden ausgeben, wielange es noch hin ist bis 24 Uhr, also bis der nächste Tag beginnt.

  • #2
    - In PHP oder SQL?

    - Die Doku hast du gelesen?

    - Zeig mal deinen Ansatz.

    - Nicht wirklich Fortgeschritten, das ist in PHP fast ein "Einzeiler". Siehe zB hier: https://php-de.github.io/jumpto/datetime/#differenzen

    MOD: Verschoben von PHP-Fortgeschritten
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      In PHP

      $timestamp = 1498753520;

      Jetzt möchte ich ausrechnen, wieviele Sekunden es bis zum nächsten Tag sind.

      Kommentar


      • #4
        Den Rest schaffst du alleine, versuch mal.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Danke, soweit war ich schon Ein Vergleich setzt voraus, dass ich ein Startdatum (das habe ich) und ein Zieldatum habe (das habe ich jedoch ncht) :-/

          Kommentar


          • #6
            PHP-Code:
            <?php

               $timestamp 
            1498753520;

               
            $sec =  mktime (235959,
                               
            date("n"$timestamp),
                               
            date("j"$timestamp),
                               
            date("Y"$timestamp)) - $timestamp 1;

                echo 
            "Datum: " date("d.m.Y H:i"$timestamp) . ", Sekunden: $sec";
            ?>
            Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

            Kommentar


            • #7
              zB:
              PHP-Code:
              $dt = (new DateTimeImmutable())->setTimestamp(1498753520);

              // so:

              $toDate $dt->modify('23:59:59')->modify('+1 second');
              print_r($toDate);
              /*
              DateTimeImmutable Object
              (
                  [date] => 2017-06-30 00:00:00.000000
                  [timezone_type] => 3
                  [timezone] => US/Pacific
              )
              */

              // ODER

              $toDate $dt->modify('next day')->modify('00:00:00');
              print_r($toDate);
              /*
              DateTimeImmutable Object
              (
                  [date] => 2017-06-30 00:00:00.000000
                  [timezone_type] => 3
                  [timezone] => US/Pacific
              )
              */

              // etc 
              Das kannst du dann als Timestamp zurückrechnen und die Differenz sind die Sekunden... Als Beispiel. Gibt aber mehr Wege.
              The string "()()" is not palindrom but the String "())(" is.

              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
              PHP.de Wissenssammlung | Kein Support per PN

              Kommentar


              • #8
                Vielen lieben Dank euch, ich werde es später direkt mal ausprobieren

                Kommentar


                • #9
                  Sag dann auf was du kommst.. Mein Versuch:

                  PHP-Code:
                  $from 1498753520;
                  $to = (new DateTime())->setTimestamp($ts)->modify('23:59:59')->format('U');

                  echo 
                  $to $from// 52479 
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    modify('23:59:59')
                    unterschlägst du da genau genommen nicht 1 Sekunde?

                    Kommentar


                    • #11
                      Bin mir nicht sicher, wie er es "genau" haben will (siehe auch #7).
                      PHP-Code:
                      $toDate $dt->modify('23:59:59')->modify('+1 second'); 

                      PHP ist bei relativen "Datums" sehr flexibel:
                      PHP-Code:
                      $from 1498753520;
                      $to = (new DateTime())->setTimestamp($from)->modify('next day 00:00:00')->format('U');

                      print_r($to $from); // 52480 
                      The string "()()" is not palindrom but the String "())(" is.

                      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                      PHP.de Wissenssammlung | Kein Support per PN

                      Kommentar


                      • #12
                        PHP-Code:
                        date_default_timezone_set("Europe/Berlin"); 
                        sollte in den Skripten nicht fehlen! Damit erhält man dann 20080 als Ergebnis.

                        Kommentar


                        • #13
                          Und jetzt noch eine "schöne" Variante, die dann auch optisch nachvollziehbarer ist als die Wurst oben:

                          PHP-Code:
                          date_default_timezone_set("Europe/Berlin");  // Zeitzone

                          $dt = (new DateTimeImmutable())->setTimestamp(1498753520);  // Datumsobjekt auf Basis TS erstellen
                          $dtMidnight $dt->modify('next day 00:00');  // Mitternacht ermitteln

                          $diff $dtMidnight->diff($dt); // DateInterval Objekt erstellen / Differenzen ermitteln
                          print_r($diff); // mal schaun was da so drinnen steckt
                          /*
                          DateInterval Object
                          (
                              [y] => 0
                              [m] => 0
                              [d] => 0
                              [h] => 5
                              [i] => 34
                              [s] => 40
                          ...
                          */

                          $sek = ($diff->3600) + ($diff->60) + ($diff->s) ; // auf Basis des Interval-Objektes die Sekunden ausrechnen.
                          echo $sek;  // 20080 
                          The string "()()" is not palindrom but the String "())(" is.

                          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                          PHP.de Wissenssammlung | Kein Support per PN

                          Kommentar


                          • #14
                            Schöheitswettbewerb? Solche kleinen Problemstellungen wie nutze ich gerne mal um dies mit meiner Klassenerweiterung zu testen:
                            PHP-Code:
                            $timestamp 1498753520;
                            date_default_timezone_set("Europe/Berlin");  // Zeitzone
                            echo  86400 dt::create($timestamp)->getDaySeconds();  //20080 
                            Der obige Ansatz kann jedoch auch ganz einfach mit den PHP-Standardfunktionen gelöst werden, die Sekunden des Tages zu ermitteln sollte nun wirklich nicht das Problem sein.

                            Kommentar


                            • #15
                              Jetzt hat aber nicht jeder Tag 86400 Sekunden.
                              The string "()()" is not palindrom but the String "())(" is.

                              Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                              PHP.de Wissenssammlung | Kein Support per PN

                              Kommentar

                              Lädt...
                              X