Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Datum in einer URL tt/mm/jjjj

Bei Verwendung von strotime() Sie müssen sicherstellen, dass Sie ein gültiges datetime-Format verwenden . Sonst strtotime() gibt false zurück oder geben Ihnen einen unerwarteten Wert.

Datumsangaben im XX/XX/XXXX-Format werden im US-Format angenommen, was bedeutet, dass die ersten beiden Ziffern den Monat, die nächsten beiden Ziffern den Tag des Monats und die letzten vier Ziffern das Jahr darstellen. Wenn Bindestriche verwendet werden, wird davon ausgegangen, dass die Daten im europäischen Format vorliegen. Zum Beispiel:

04/18/2017 = April 18, 2017
12/18/2017 = December 18, 2017
18-04-2017 = April 18, 2017
18-12-2017 = December 18, 2017

Wenn Sie versehentlich Tag und Monat vertauschen strtotime() gibt false zurück, da das Datum ungültig ist.

18/04/2017 // error
18/12/2017 // error
04-18-2018 // error
12-18-2017 // error

Die obigen Beispiele sind einfach. Es können jedoch Probleme auftreten, wenn die Daten mehrdeutig sind. Zum Beispiel:

04/12/2017 = April 12, 2017
12/04/2017 = December 4, 2017
04-12-2017 = December 4, 2017
12-04-2017 = April 12, 2017

In den obigen Beispielen erhalten wir durch das Wechseln von Tag und Monat immer noch gültige Daten, die zu unerwarteten Ergebnissen in Ihrer Anwendung führen können. Um diese potenziellen Probleme zu lösen, wird empfohlen, DateTime::createFromFormat() Um die Datumsanzeige zu parsen, geben Sie ein DateTime() zurück Objekt, von dem Sie einen Unix-Zeitstempel erhalten können , Datum in ein anderes Format umwandeln , oder verwenden Sie es zum Vergleichen mit anderen DateTime Objekte.

// Parse US date format
$date1 = DateTime::createFromFormat('m/d/Y', '04/18/2017');

// Get Unix timestamp of 1493581268
$timestamp = $date1->getTimestamp();

// Parse European date format
$date2 = DateTime::createFromFormat('d-m-Y', ''18-04-2017);

// Get MySQL format (ISO-8601) of 2017-04-18
$mysqlDate = $date2->format('Y-m-d');

Siehe auch:

Für Ihren speziellen Fall funktioniert der folgende Code:

$date = $date1 = DateTime::createFromFormat('m/d/Y', '20/02/2000');
$D->query = $date->format('Y-m-d'); // 2000-02-20