php - xsl - Fecha en una URL dd/mm/aaaa
xsl format date yyyy-mm-dd (1)
Al usar strotime()
, debe asegurarse de estar utilizando un formato de fecha y hora válido . De strtotime()
contrario, strtotime()
devolverá false
o le dará un valor inesperado.
Se supone que las fechas que usan el formato XX / XX / XXXX están en formato US, lo que significa que los primeros dos dígitos representan el mes, los dos dígitos siguientes representan el día del mes y los últimos cuatro representan el año. Cuando se usan 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á falso 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 directos. Pero puede encontrarse con 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, seguimos obteniendo fechas válidas que pueden causar resultados inesperados en su aplicación. Para resolver estos posibles problemas, se recomienda utilizar DateTime::createFromFormat()
para analizar la fecha y devolver un objeto DateTime()
desde el que se puede obtener una marca de tiempo Unix , convertir la fecha en otro formato o usarla para compararla con otra Objetos DateTime
// 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
Estoy pasando una fecha (dd / mm / aaaa) en URL con el siguiente formato:
http://www.website.com/_parameter=20/02/2000
Estoy usando el siguiente PHP para convertirlo al formato AAAA-MM-DD.
<?php
$D->query = '''';
if ($this->param(''_parameter'')) $D->query = date(''Y-m-d'', strtotime($this->param(''_parameter'')));
?>
Y mi base de datos de la siguiente manera:
SELECT idtask FROM task WHERE unfinish=1 AND date LIKE ''%".$D->query."%'' "
Lo anterior devuelve lo siguiente:
1970-01-01