php - español - Método de fecha(), "Se encontró un valor numérico que no está bien formado" no quiere formatear una fecha pasada en $_POST
strtotime to date online (2)
Desafortunadamente no puedo usar DateTime()
ya que el servidor en el que se encuentra este proyecto está ejecutando PHP v.5.2.
la línea en cuestión:
$aptnDate2 = date(''Y-m-d'', $_POST[''nextAppointmentDate'']);
arroja el siguiente error:
Notice: A non well formed numeric value encountered
así que var dump para asegurarme de que esté bien formateado ..
var_dump($_POST[''nextAppointmentDate'']);
string(10) "12-16-2013"
Los documentos de php indican que toma una marca de tiempo y no una cadena. pero cuando lo hago:
date(''Y-m-d'', strtotime($_POST[''nextAppointmentDate'']));
y luego var_dump
el resultado, me sale esto:
string(10) "1969-12-31"
¿Por qué no puedo formatear una fecha con este valor de fecha y strtotime ()?
¡Gracias!
De la documentación para strtotime()
:
Las fechas en los formatos m / d / a o dmy se desambiguan al mirar el separador entre los diversos componentes: si el separador es una barra (/), se asume el m / d / y estadounidense; mientras que si el separador es un guión (-) o un punto (.), se asume el formato dmy europeo.
En su cadena de fecha, tiene 12-16-2013
. 16
no es un mes válido, y por strtotime()
tanto, strtotime()
devuelve false
.
Ya que no puede usar la clase DateTime, puede reemplazar manualmente -
con /
using str_replace()
para convertir la cadena de fecha a un formato que strtotime()
entiende:
$date = ''2-16-2013'';
echo date(''Y-m-d'', strtotime(str_replace(''-'',''/'', $date))); // => 2013-02-16
El segundo argumento en la función de fecha () es la marca de tiempo de Unix, no la cadena de fecha. Solo usa explode () para dividir la cadena de fecha y combinarla nuevamente. Strtotime no espera fecha en tal formato.