2016-05-26 21 views
0

Ich habe durch convert php date to mysql format gegangen, aber noch habe ich einige Probleme und Fragen,php convert Datum mysql Format

Im Allgemeinen meine Anwendung können Eingangsdaten in Y-m-d, d-m-y, m-d-Y, jS, F Y Format oder sogar mit '/' Separator.

Ich möchte dies in zu MYSQL Y-m-d Format konvertiert werden Daten, ich wie unten versucht, aber es zeigt verschiedene Ausgabe als erwartet,

Nichtarbeits

date_format(date_create_from_format('d-m-Y', '02-25-2016'), 'Y-m-d'); 

Arbeits

date_format(date_create_from_format('d-m-Y', '25-02-2016'), 'Y-m-d'); 

So scheint es, dass Format und String auf die gleiche Weise übereinstimmen, ansonsten wird es nicht korrekt interpretiert,

Was ist der beste Weg, um über 4 Formateingaben in das mysql (Y-m-d) Format zu konvertieren?

Dank fortgeschritten,

+2

Warum in aller Welt erwarten Sie 'date_create_from_format ('d-m-Y', '02 -25-2016')' arbeiten? Wie viele Jahre haben 25 Monate? Natürlich müssen der Datumswert und die Formatmaske übereinstimmen ..... das ist der ganze Sinn von 'date_create_from_format()' !!! –

+0

@MarkBaker, ich weiß, das wird nicht funktionieren, deshalb habe ich gefragt, welchen Weg es unabhängig von der Eingabe Datum Format zu bekommen :-) – rjcode

+0

Haben Sie versucht mit $ date = new \ DateTime ($ date_str); echo $ date-> format ('Y-m-d'); – Nitin

Antwort

0

ich Sie verwenden würde vorschlagen Diese Funktion: DateTime::createFromFormat

Verwenden Sie dies, müssen Sie ein Datum erstellen, indem Sie das bestimmte Format angeben.

Versuchen Sie folgendes:

$date = DateTime::createFromFormat('Y-m-d', '2016-05-26'); 
echo $date->format('Y-m-d'); 
echo "<hr/>"; 

$date = DateTime::createFromFormat('d-m-Y', '26-05-2016'); 
echo $date->format('Y-m-d'); 
echo "<hr/>"; 

$date = DateTime::createFromFormat('m-d-Y', '05-26-2016'); 
echo $date->format('Y-m-d'); 
echo "<hr/>"; 

$date = DateTime::createFromFormat('jS F Y', '26th May 2016'); 
echo $date->format('Y-m-d'); 
0

Danke für alle Anregungen, ich glaube, ich meine Logik gefunden, Mein Datumsformat Auswahl wird in SQL-Datenbank gespeichert, wie unten so versuchen,

date_format(date_create_from_format('format from db', 'user entered format'), 'Y-m-d'); 

Als Benutzer eingegeben Format ist in db gespeichert, so dass ich das in diesem date_format Funktion ziehen wird, so werden beide übereinstimmen und ich kann zu Ymd konvertieren!

Danke,