Use strtotime()
en su primera fecha y luego date('Y-m-d')
vuelva a convertirla:
$time = strtotime('10/16/2003');
$newformat = date('Y-m-d',$time);
echo $newformat;
// 2003-10-16
Tenga en cuenta que existe una diferencia entre usar la barra diagonal /
y el guión -
en la strtotime()
función. Para citar de php.net:
Las fechas en los formatos m / d / y o dmy se desambiguan mirando el separador entre los diversos componentes: si el separador es una barra oblicua (/), entonces se supone el m / d / y estadounidense; mientras que si el separador es un guión (-) o un punto (.), entonces se supone el formato dmy europeo.
Para evitar posibles ambigüedades, es mejor usar fechas ISO 8601 (AAAA-MM-DD) o DateTime :: createFromFormat () cuando sea posible.
strtotime
acepta ciertos formatos. No se puede alimentar lo que sea. Es por eso queDateTime::createFromFormat
debe usarse en lugar destrtotime
. Lamentablemente, esta respuesta tiene demasiados votos a favor para que nadie preste atención. Todo es copiar y pegar en estos días.Debe tener cuidado con los formatos m / d / Y y mdY. PHP considera
/
que significa m / d / Y y-
que significa dmY. Describiría explícitamente el formato de entrada en este caso:De esa manera no estás a los caprichos de una determinada interpretación.
fuente
strtotime()
función.Para analizar la fecha, debe usar: DateTime :: createFromFormat ();
Ex:
Sin embargo, cuidado, porque esto se bloqueará con:
En realidad, primero debe comprobar que el formato funcionó bien:
Ahora, en lugar de estrellarse, obtendrá una excepción, que puede atrapar, propagar, etc.
$ dateDE tiene el formato incorrecto, debería ser "16.10.2013";
fuente
Editar: también puede pasar un constructor DateTimeZone a DateTime () para garantizar la creación de la fecha para la zona horaria deseada, no la predeterminada del servidor.
fuente
Para la primera cita
Para nueva fecha
fuente
Si tiene el formato dd-mm-aaaa, entonces en PHP no funcionará como se esperaba. En el documento PHP tienen la siguiente guía.
Por lo tanto, simplemente no puede usar lo que desee. Cuando intente utilizar el formato dd / mm / aaaa con esto, eliminará FALSO. Puede ajustar con lo siguiente.
fuente
Al igual que tenemos la fecha "07 / May / 2018" y necesitamos la fecha "2018-05-07" como compatible con mysql
Esto funciona para mi. disfruta :)
fuente
Como nadie mencionó esto, aquí hay otra forma:
$date = date_create_from_format("m-d-Y", "10-16-2003")->format("Y-m-d");
fuente
Si desea aceptar fechas usando pedidos estadounidenses (mes, fecha, año) para formatos de estilo europeo (usando guión o período como día, mes, año) mientras aún acepta otros formatos , puede extender la clase DateTime:
O bien, puede realizar una función para aceptar mdY y generar Ymd:
fuente
para crear la fecha desde cualquier cadena use:
$ date = DateTime :: createFromFormat ('dmy H: i', '01 -01-01 01:00 '); echo $ fecha-> formato ('Ymd H: i');
fuente