online español ejemplos day convert php date strtotime

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.