sql >> Base de Datos >  >> RDS >> Mysql

Fecha en una URL dd/mm/yyyy

Al usar strotime() debe asegurarse de que está utilizando un formato de fecha y hora válido . De lo contrario, strtotime() devolverá false o darle un valor inesperado.

Se supone que las fechas que usan el formato XX/XX/XXXX están en formato estadounidense, lo que significa que los dos primeros dígitos representan el mes, los dos dígitos siguientes representan el día del mes y los últimos cuatro dígitos representan el año. Cuando se utilizan guiones, se supone que las fechas están en formato europeo. Por ejemplo:

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

Si accidentalmente cambia el día y el mes strtotime() devolverá false ya que la fecha no es válida.

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

Los ejemplos anteriores son sencillos. Pero puede tener problemas cuando las fechas pueden ser ambiguas. Por ejemplo:

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

En los ejemplos anteriores, al cambiar el día y el mes, aún obtenemos fechas válidas que pueden causar resultados inesperados en su aplicación. Para resolver estos posibles problemas, se recomienda usar DateTime::createFromFormat() para analizar el anuncio de fecha, devuelve un DateTime() objeto desde el cual puede obtener una marca de tiempo Unix , convertir la fecha a otro formato , o utilícelo para compararlo con otros DateTime objetos.

// 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');

Ver también:

Para su caso específico, el siguiente código funcionará:

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