Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Data em um URL dd/mm/aaaa


Ao usar strotime() você precisa ter certeza de que está usando um formato de data e hora válido . Caso contrário strtotime() retornará false ou dar-lhe um valor inesperado.

As datas que usam o formato XX/XX/XXXX são consideradas no formato dos EUA, o que significa que os dois primeiros dígitos representam o mês, os próximos dois dígitos representam o dia do mês e os quatro últimos dígitos representam o ano. Quando os traços são usados, as datas são consideradas no formato europeu. Por exemplo:
04/18/2017 = April 18, 2017
12/18/2017 = December 18, 2017
18-04-2017 = April 18, 2017
18-12-2017 = December 18, 2017

Se você acidentalmente mudar o dia e o mês strtotime() retornará false porque a data é inválida.
18/04/2017 // error
18/12/2017 // error
04-18-2018 // error
12-18-2017 // error

Os exemplos acima são diretos. Mas você pode ter problemas quando as datas podem ser ambíguas. Por exemplo:
04/12/2017 = April 12, 2017
12/04/2017 = December 4, 2017
04-12-2017 = December 4, 2017
12-04-2017 = April 12, 2017

Nos exemplos acima, trocando o dia e o mês, ainda obtemos datas válidas que podem causar resultados inesperados em sua inscrição. Para resolver esses possíveis problemas, é recomendável usar DateTime::createFromFormat() para analisar o anúncio de data, retorne um DateTime() objeto do qual você pode obter um Unix Timestamp , converter a data em outro formato , ou use-o para comparar com outros 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');

Veja também:

Para o seu caso específico, o código a seguir funcionará:
$date = $date1 = DateTime::createFromFormat('m/d/Y', '20/02/2000');
$D->query = $date->format('Y-m-d'); // 2000-02-20