• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datum

zauberwürfel

Mitglied
Hallo zusammen,
hier mal ein (hoffentlich) Leckerbissen für alle die auch nur ein ganz kleines Bisschen Ahnung von php haben: Warum kommt bei folgendem Code raus, dass heute der 20.9.2022 ist?

Code:
$timestamp = time();
$datum = date("d.m.Y", $timestamp);

Wenn diese Methode überhaupt nicht empfehlenswert ist, wie macht man es dann?

zauberwürfel
 
PHP:
<?php

$timestamp = time();
$datum = date('d.m.Y', $timestamp);

var_dump($datum);          // string(10) "22.09.2012"

// date() impliziert übrigens time(), wenn der zweite Parameter nicht angegeben
// wird.

var_dump(date('d.m.Y'));   // string(10) "22.09.2012"

Wenn bei dir wirklich das ausgegeben wird, was du beschreibst, ist die Uhrzeit deines Servers falsch eingestellt und deine PHP-Version formatiert 'm' falsch (keine führende Null). Das halte ich nicht für besonders wahrscheinlich.

Ist das der gesamte Code?
 
Vielleicht hast du die lokale Zeit (auf deinem Computer falsch eingestellt), Klingt komsich aber ich hatte mal das Problem das ich keine Internet seite aufrufen konnt weil das datum des computer nicht passte
 
Dass eine Server-Uhr nach dem Mond geht ist nichts Neues.
Korrigieren kann das aber nur der Support vom Provider.
 
Hallo,
danke für die schnellen Antworten. Ich hab keine Ahnung, auf meinem PC ist die Uhrzeit jedenfalls richtig eingestellt. Ich werde es mal mit der Methode in #2 probieren.
zauberwürfel
 
Ist aber so. Ich werde hier nicht herumlügen

Ich unterstelle ja keine Absicht.

Aber ich frage doch noch mal unmissverständlich nach: var_dump(date('m')); liefert jetzt im September den String "9" und nicht "09"?

Ich möchte mich noch mal versichern, bevor ich groß nachforsche, ob es da Bugs oder Locale-Einstellungen oder etwas in der Art gibt.

zauberwürfel schrieb:
Ich werde es mal mit der Methode in #2 probieren.

Wobei das keine andere Methode ist, sondern nur ein einfaches (vollständiges) Code-Beispiel, um meine Zweifel zu verdeutlichen.

Ist nicht böse gemeint, aber ich bin mir nicht sicher, dass der Code, den du uns gezeigt hast, derjenige ist, der die seltsame Ausgabe erzeugt. Da kommt auch wieder der Unterschied zwischen "9" und "09" ins Spiel.



Falls es sich um einen eigenen Server handelt (Linux?), tipp doch mal "date" auf der Konsole.
 
Zuletzt bearbeitet:
Aha, also doch "09" und es gibt eine DB. Schau an. ;)

Wie sieht denn der Code aus, der den Eintrag erstellt? Lass mich raten, dort übergibst du den String "23.09.2012" und der landet als "2023-09-20" in der DB?

Falls ja: Das liegt daran, dass MySQL das Format "Y-m-d" ("2012-09-23") erwartet und dann versucht, "23.09.2012" in dieses Format umzuwandeln, so gut es geht.

Code:
SELECT CAST('23.09.2012' AS DATE), CAST('2012-09-23' AS DATE);
+----------------------------+----------------------------+
| CAST('23.09.2012' AS DATE) | CAST('2012-09-23' AS DATE) |
+----------------------------+----------------------------+
| 2023-09-20                 | 2012-09-23                 |
+----------------------------+----------------------------+
1 row in set (0.00 sec)

Also einfach das passende Format übergeben und fertig.

Keine Bugs, keine falsche Serverzeit.
 
Danke,
jetzt funktionierts endlich. Geht jetzt bitte nicht an die Decke, aber wie kriege ich aus dem Datum aus der Datenbank (2012-09-23) jetzt wieder ein "normales Datum" (23.09.2012)?
zauberwürfel
 
Zurück
Oben