Ankündigung

Einklappen
Keine Ankündigung bisher.

time()

Einklappen

Neue Werbung 2019

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

  • time()

    Hallo zusammen. Ich möchte das aktuelle Datum und Zeit ausgeben.
    Hier kommt aber eine Stunde zu früh raus. Weiss jemand warum?
    PHP-Code:
    $timestamp time();
    $datum date("d.m.Y",$timestamp);
    $uhrzeit date("H:i",$timestamp);
    echo 
    $datum," - ",$uhrzeit," Uhr"

  • #2
    „Falsche“ Zeitzone. http://php.net/manual/en/function.da...mezone-set.php

    Kannst du auch in einem date()-Aufruf schreiben. "d.m.Y H:i"

    Kommentar


    • #3
      Nutze besser gleich die "moderne" DateTime-Klasse:

      PHP-Code:
      date_default_timezone_set('Europe/Berlin');
      $dt = new DateTime('now');
      echo 
      $dt->format('Y-m-d H:i:s');
      // 2015-02-07 20:23:47

      // oder ohne date_default...

      $dt = new DateTime('now', new DateTimeZone('Europe/Berlin'));
      echo 
      $dt->format('Y-m-d H:i:s');
      // 2015-02-07 20:23:47 
      Oder prozedualer Stil

      PHP-Code:
      date_default_timezone_set('Europe/Berlin');
      echo 
      date_create()->format('Y-m-d H:i:s');
      // 2015-02-07 20:25:39

      // bzw. ohne date_default...

      echo date_create('now', new DateTimeZone('Europe/Berlin'))->format('Y-m-d H:i:s');
      // 2015-02-07 20:26:10 
      LG
      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


      • #4
        Herzlichen Dank, perfekt!

        Ich verstehe aber nicht, warum ein Eintrag in die DB, den ich mit timestamp automatisch generiere, richtig kommt, ohne dass ich die Zeitzone angab?
        Und wie kann ich nun die beiden timestamps miteinander vergleichen?
        In der DB habe ich den Eintrag folgendermassen:
        2015-02-07 20:31:47

        Kommentar


        • #5
          Ich denke mal weil der DB-Server eine eigene Zeitzonen-Einstellung hat und nicht die von PHP verwendet bzw. umgekehrt.

          Und wie kann ich nun die beiden timestamps miteinander vergleichen?
          Was meinst du mit vergleichen, das kannst du direkt in SQL machen, es gibt CURDATE() (MySQL) fürs Datum und NOW() für "jetzt". Vergleichen dann mittels > < etc..

          Code:
          SELECT .. FROM .. WHERE `event_date` > CURDATE()
          Zeige alle Events in der Zukunft an.
          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


          • #6
            ich möchte sie direkt vergleichen, vorher versuchte ich das so:
            PHP-Code:
            $timestamp time()-10*60;
            if (
            $row['timestamp'] >= $timestamp) {
                echo 
            "<tr bgcolor='#FF0000'> usw 
            also: Alle Einträge die weniger als 10 Minuten alt sind werden angemalt.
            Aber ich habe ein Durcheinander mit den eingetragenen Zeiten in der DB und diesen Zeiten hier in Sekunden...
            Wie kann ich 10 Minuten hier bei deinen Vorschlägen abziehen?

            Kommentar


            • #7
              In der DB habe ich den Eintrag folgendermassen:
              2015-02-07 20:31:47
              Alle Einträge die weniger als 10 Minuten alt sind werden angemalt.
              Also gibt mehr Möglichkeiten.. Versuch ev. mal so in der Art

              PHP-Code:
              date_default_timezone_set('Europe/Berlin');

              $ref_date date_create('-10 minutes');  // jetzt vor 10 minuten
              $db_date  date_create($row['timestamp']); // dein DB-Datum

              if ($db_date $ref_date) {
               
              //... alter als 10 min.

              Ab PHP 5.2.2 kann man die beiden DateTime-Objekte direkt mittels < > == vergleichen. Falls du eine ältere Version hast siehe DateTime:iff.

              LG
              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
                ok, besten Dank, es funktoniert!
                Danke für die schnelle Hilfe!

                Kommentar


                • #9
                  Es ist anzuraten, möglichst überall UTC zu nutzen (gerade in der Datenbank) und nur für die Ausgabe in die gewünschte Zeitzone umzurechnen.

                  Kommentar

                  Lädt...
                  X