Ankündigung

Einklappen
Keine Ankündigung bisher.

SET time_zone = 'Europe/Berlin'

Einklappen

Neue Werbung 2019

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

  • #16
    einfach nicht mehr aus der DB ausgeben

    Kommentar


    • #17

      Ich hab da was gefunden: SET time_zone = 'Europe/Berlin'; Das kann man doch bestimmt auch für PDO ummünzen?! HIIIILLFFEEEE

      Kommentar


      • #18
        Zeige mal deinen Code den du derzeit verwendest um die Differenz zu ermitteln, dann zeige ich dir wo du das einbauen musst.

        Kommentar


        • #19
          Ein Teilcode der 4 verschiedene if Abfragen umfasst:

          Code:
          if($rubrik != "Angebote" && isset($plz)){
          
                   $ergebnis = ogdbPLZnearby($plz, $select);
          
                   $value = '"' . implode('","', $ergebnis) . '"';
          
               $sql = "SELECT titel,Auktionsnummer FROM angebote WHERE top = top AND plz IN ($value) AND kategorie = '{$rubrik}' AND NOT timediff(now(), angebote.dauer) > 0 ORDER BY `dauer` DESC ";
          
               }

          Kommentar


          • #20
            Mir fällt gerade auf (ist mir schon einmal aufgefallen), dass auf php.de auch nicht die Zeitzone Europa/Berlin berücksichtigt wird...

            Laut meiner Uhr war es gerade 18:54 Uhr

            Die Zeit auf php.de allerdings 17:54 Uhr

            ?

            Kommentar


            • #21
              Führe mal folgendes Script aus und kopiere das Ergebnis hier rein:

              Bei der Verbindung zur DB, 1. Zeile, nimmst du natürlich deine Daten!
              PHP-Code:
              $pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8''root''');
              $pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);

              $query $pdo->query("SELECT @@global.time_zone, @@session.time_zone, now();");

              $result $query->fetchAll(PDO::FETCH_ASSOC);

              echo 
              'Database Time Setting:';
              echo 
              '<pre>';
              print_r($result);
              echo 
              '</pre>';
              echo 
              'PHP Timezone is set to ' date_default_timezone_get() . "<br>\n";

              $dt date_create()->format('Y-m-d H:i:s');
              echo 
              $dt

              Kommentar


              • #22
                Database Time Setting:
                Array ( [0] => Array ( [@@global.time_zone] => SYSTEM [@@session.time_zone] => SYSTEM [now()] => 2018-06-02 17:39:03 ) ) PHP Timezone is set to UTC
                2018-06-02 17:39:03

                Kommentar


                • #23
                  Prima.
                  Du nimmst folgenden Code und kopierst ihn oberhalb der ganzen if-Bedingungen
                  PHP-Code:
                  $dt = new DateTime('now', new DateTimeZone('UTC'));
                  $dt->setTimezone(new DateTimeZone('Europe/Berlin'));
                  $de_now $dt->format('Y-m-d H:i:s'); 
                  Jetzt hast du die Zeit für Deutschland in der Variable $de_now stehen.
                  Diese fügst du in die Abfragen ein anstatt des now(), welches du jetzt verwendest.

                  Hier mal mit deinem Code von vorhin
                  PHP-Code:
                  <?php
                  $dt 
                  = new DateTime('now', new DateTimeZone('UTC'));
                  $dt->setTimezone(new DateTimeZone('Europe/Berlin'));
                  $de_now $dt->format('Y-m-d H:i:s');

                  //weiterer Code


                  if($rubrik != "Angebote" && isset($plz)){
                      
                  $ergebnis ogdbPLZnearby($plz$select);
                      
                  $value '"' implode('","'$ergebnis) . '"';
                      
                  $sql "SELECT titel,Auktionsnummer FROM angebote WHERE top = top AND plz IN ($value) AND kategorie = '{$rubrik}' AND NOT timediff({$de_now}, angebote.dauer) > 0 ORDER BY `dauer` DESC ";
                  }
                  ?>

                  Kommentar


                  • #24
                    Es geht noch viel schneller:

                    Einfach die database.php um eine Zeile erweitern.

                    Code:
                    <?php
                    
                    $pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'user', '',[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
                    $pdo->exec("SET time_zone='Europe/Berlin';");
                    Soll ich trotzdem Deinen Code nehmen?

                    Fündig bin ich geworden auf stackoverflow.com

                    mit den Infos von zwischendurch von Dir...

                    Kommentar


                    • #25
                      Bei mir ging
                      "SET time_zone='Europe/Berlin';"
                      nicht.
                      'Kannst du aber gerne testen.

                      Ob es geht oder nicht hängt von mehreren Dingen ab, die dafür zuständig sind. Da bei dir auch System steht und keine Zeitzone, gehe ich mich mal besser auf Nummer sicher.
                      Wen es interessiert kann dazu das Handbuch konsultieren und sollte auch die Kommentare dazu lesen.

                      Kommentar


                      • #26
                        Also ist Deine Vorgehensweise sicherer?

                        Oder im Prinzip nur eine andere Vorgehensweise?

                        "SET time_zone='Europe/Berlin';"

                        funktioniert bei mir.



                        Kommentar


                        • #27
                          Dann hast du die Alternative es so zu machen. sicherer ist das nicht nur eine andere Vorgehensweise.

                          Kommentar


                          • #28
                            1000 x thanks @protestix

                            Kommentar


                            • #29
                              DATETIME bei MySQL unterstützt keine Zeitzonen. Was du das herumprobierst ist also komplett sinnlos.

                              Wenn du Zeitzonen in der Datenbank behandeln willst, solltest du am besten alles als UTC speichern und davon ausgehend umrechnen, oder verwende ein vernünftiges Datenbanksystem (also nicht MySQL), das auch richtig mit Zeitzonen umgehen kann.

                              Kommentar

                              Lädt...
                              X