datetime Format umwandeln
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
angeben
ausgabe
auslese
befehl
code
date
datenbank
datum
ergebnis
format
funktion
jahr
minute
monat
nummer
punkt
reihenfolge
sekunde
tag
-
Hey Leute,
ich weiß, eigentlich hätte ich die Lösung im web finden sollen, aber ich hab ewig gesucht und es tag/funktion">funktioniert einfach ned.
Mein Problem:
Ich hab eine mysql-Datenbank im Format datetime, also yyyy-mm-dd hh:mm:ss
Ich hätte gerne: dd.mm.yyyy hh:mm:ss
Könnt ihr mir da weiterhelfen? Ach ja, die Datensätze sollen als mysql datetime gespeichert bleiben, also brauche ich eine php Funktion bei der Ausgabe...
thx -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
http://www.nak-webmaster.de/modules.php?name=News&file=article&sid=55
-
Die Funktion hab ich kopiert, aber dabei kam folgendes raus:
DD hh:mm:ss.MM.YYYY
Das Problem ist hald, dass die Zeitteile nicht durch - getrennt sind.
Vielleicht noch ne Idee oder ne Korrektur für die Funktion?
thx -
zuerst das auslesen, explodieren lassen und dann die funktion auf beides anwenden(entsprechend anpassen)
mfg -
Du darft an die von Karpfen genannte Funktion nicht alles, also yyyy-mm-dd hh:mm:ss übergeben, sondern nur yyyy-mm-dd.
Also nur die ersten 10 Zeichen. Das könnte man mit substr realiesieren. -
mach es dir doch einfach:
Bei der Speicherung von deinen Daten in der MySQL lässt du die Formatierung yyyy-mm-dd hh:mm:ss (Datumsschreibweise: \'Y-m-d H:i:s\'), da es zB u.a. bei Vergleichen besser geeignet ist.
Beim Auslesen dieser lässt du dir das umwandeln per SQL-Query
bswp:
SELECT DATE_FORMAT(myDate, \"%d.%m.%Y %T\") AS myDate FROM table
Eine weitere Möglichkeit wäre das PHP-basiert über das Datetime-Objekt zu machen:
/* create DateTime-object */ $dateTime = date_create($time); /* get formatted date-string */ $new_time = $dateTime->format(\'d.m.Y H:i:s\'); // alternativ: // $new_time = date_format($dateTime, \'d.m.Y H:i:s\');
Es gibt auch noch ein paar andere Funktionen und Möglichkeiten, dies zu erreichen.
(über date_parse() und viele mehr)
Ich persönlich verwende die Variante über den SQL-Query. Das \"AS myDate\" ermöglicht dir dabei die normale Verwendung, als wenn es direkt ausgelesen wäre.
Beitrag geändert: 1.4.2008 12:41:51 von pjhimself
Beitrag geändert: 1.4.2008 12:42:39 von pjhimself -
also du kannst es auch so machen:
als Beispiel nehm ich jetzt die Variable $Datum, dies definiere ich nun mit:
$Datum1 = $_POST[\"Datum1\"];
gleich da drunter kommt dann der Befehl \"explode\" kannst auch split benutzen, wie auch immer, also so:
$Datum = $_POST[\"Datum\"]; $dat = explode (\".\", $Datum);
\"explode\" zerlegt jetzt den eingegebenen Wert, mit dem Zeichen das du im gegeben hast (hier also der Punkt, siehe oben (\".\", $Datum). Als Beispiel: wenn jemand jetzt 12.03.2008 eingibt, zerlegt dir explode die Werte in folgende tags:
$dat[0] = 12
$dat[1] = 03
$dat[2] = 2008
also nach jedem Punkt teilt es den Wert auf, und den definiert ihn den tags zu, die du gleich brauchst.
weiter gehts... als nächtes benutzt du den Timestamp-Befehl \"mktime\" damit du die tage,monate,jahr ... festlegen kannst.
der befehl lautet
$timestamp = mktime(19,30,15,05,14,2008);
für die Werte in Klammern musst du jetzt deine Zeit einfügen, unzwar nach der Reihenfolge:
Stunde, Minute, Sekunde, Monat, Tag, Jahr. Also die Werte die ich gerade gegeben habe wären dann für den : 14.05.2008 19:30 und 15sec.
also fügst du deine Tags ein,
$dat[0] für den Tag
$dat[1] für den Monat
und
$dat[2] für das Jahr,
für die restliche Werte: Stunde, Minute und Sekunde kannst du einfach 0 angeben, weil du ja keine Uhrzeit angeben willst oder?
also:
$Datum = $_POST[\"Datum\"]; $dat = explode (\".\", $Datum); $timestamp = mktime(0,0,0,$dat[1],$dat[0],$dat[2]);
vor dem letzten Schritt musst du jetzt noch dein Eintrag in die Datenbank ändern also:
$eintrag = \"INSERT INTO Datenbanktabelle (Datum) VALUES (\'$Datum\')\";
du musst jetzt für Datenbanktabelle nätürlich den Namen deiner Datenbanktabelle eintragen,
für Datum trägst du, halt den Namen ein den du in deiner Datenbanktabelle für das Datum gegeben hast und
für $Datum trägst du bitte $timestamp ein.
nun der letzte Schritt... vor der Ausgabe deines Datum aus der Datumbank, kannst du nun angeben wie das Datum ausgegebn werden soll:
$abfrage = \"SELECT * FROM Datenbanktabelle\"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { echo date(\"d.m.Y\",$row->Datum); }
mit date() definierst du halt die ausgabe und mit \"d.m.Y\" gibst du die Reihenfolge der Werte an.
also:
d ist für Tag des Monats, zweistellig
m ist für Nummer des Monats, zweistellig
Y ist für Nummer des Jahrer, vierstellig
ich hoffe du konntest mein mini-tutorial zur gewünschten Datumsausgabe verstehen, es ist zwar länger erklärt als die Vorschläge der anderen, aber mir kam es hierbei darauf an, dass du die ganzen codes auch kappierst und nicht nur copy&paste und dann was war denn das überhaupt
naja falls du nicht schon einem Vorschlag der anderen netten Leute hier gefolgt bist, hoffe ich, dass ich dir helfen konnte
ich schreib imma so viel -.-
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage