Frage von PG001, 56

Wie formatiere ich in php ein Datum für Mysql?

Hallo Zusammen,

ich verzweifle gerade wieder an php und mysql :-(

Ich habe einen Kalender in dem man ein Datum im Format "01. Januar 2016" picken kann.

Diesen string möchte ich so formatieren, dass ich in eine MYSQL Tabelle(Date) einfügen kann.

Bisher habe ich folgenden gekürzten Code mit englischen Monaten:

$termin_datum_formatted_von = date("Y-m-d",  strtotime("1. January 2016")); 

Damit bekomme ich das Ergebnis 2016-01-01, welches ich dann in die Datenbank einfügen könnte. Das Problem ist aber, dass der Kalender mir deutsche Monate liefert.

Wie bekomme ich es hin, dass strtotime mit z.B. Januar arbeiten kann?

Vielen Dank.

Gruß PG

Antwort
von maximilianus7, 28

"Kalender in dem man ein Datum im Format "01. Januar 2016" picken kann." - verwendest du den jquery datepicker? da gibts noch die parameter:
altField und altFormat mit dem du ein 2. aber unsichtbares input field adressieren kannst. was du dann in php im gewünschtem format abgreifen kannst. 

Antwort
von Malemeister, 36

Hallo,

bitte fang nicht an da irgendwas rumzupfuschen oder einfach den String zu bearbeiten usw.

1. Da können dir Fehler ohne Ende unterlaufen

2. Das geht wesentlich einfacher.

Schau dir als erstes mal die DateTime Klasse von PHP an: http://php.net/manual/de/class.datetime.php

Damit kannst du schon eine Menge anstellen. Eigenltich ist die format-Funktion von der Klasse schon alles was du brauchst.

Was die Sprache angeht, solltest du dir mal die setlocale-Funktion von PHP anschauen. Damit solltest du dann auch Deutsche Datumsformate hinbekommen.

Grüße

Kommentar von PG001 ,

Hi,

Ich bin glaub ich zu blöd...

$sqldatum = $date->format('Y-m-d');

Kann ich nicht nutzen, da ich ja mit Januar statt January arbeiten muss

Setlocale bringt mich da auch nicht wirklich weiter...

setlocale(LC_ALL,"US_en");

$datum = "03. Januar 2016";

$date = new DateTime($datum);
$sqldatum = $date->format('Y-m-d');

echo "$sqldatum";

Bleibt also nur die Möglichkeit mit einer Funktion(replace) Januar durch January zu ersetzt und dann das Datum zu formatieren?

Kommentar von Malemeister ,

Hallo,

vielleicht nochmal die Funktion "set_locale" Vernünftig angucken?!

http://php.net/manual/de/function.setlocale.php

Dort steht das das Übersetzen einer Zeit nur mit der Funktion "strftime" möglich ist. Und das ist auch ganz einfach (1 Zeiler). Du musst dir nur mal die Dokumentation angucken.

Grüße

Antwort
von perhp, 29

Wandle doch das Datum in einem Timestamp um, dann kannst du dir sicher sein, dass das Datum sicher stimmt.

Antwort
von usberlin, 25
$date = new DateTime($datum);
$sqldatum = $date->format('Y-m-d');
Kommentar von PG001 ,

Hi,

das funktioniert leider nicht, da ich den Monat in deutsch habe: Januar statt January..

Lg

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten