HOWTO · PHP
Cómo convertir una cadena a fecha y hora en PHP
Diferentes formas de convertir una cadena a un formato de fecha y fecha-hora utilizando funciones PHP de varias versiones, como la combinación de estratagema y fecha, o utilizando DateTime::createFromFormat o date_create_from_format.
En esta página
Para convertir una cadena a Date y DateTime, se pueden usar varias funciones o métodos, como la combinación de strtotime() y date(), usando el método de clase DateTime::createFromFormat o el método format() dentro de la misma clase, o la función incorporada en PHP de date_create_from_format.
Combinación de strtotime() y date
La función strtotime() devuelve el número de segundos transcurridos desde el 1 de enero de 1970, como la marca de tiempo de una máquina Linux. Devuelve el total de segundos del parámetro proporcionado pasado a la función.
Parámetros:
Time/Date(requerido) - Este parámetro especifica la fecha/hora con formato de cadena.Now(opcional) - Este parámetro es el sello de tiempo que puede ser usado como base en el cálculo de las fechas relativas
La función date() es la que formatea la fecha y la hora local, y devuelve una nueva cadena de fecha formateada.
Parámetros:
format(requerido) - Este parámetro especifica el formato de la cadena proporcionada.timestamp(opcional) - Este parámetro es un timestamp entero de UNIX y el valor por defecto es la hora local actual.
Para usar correctamente tanto strtotime()() como date(), use strtotime() en la primera fecha y luego use date() para convertirla de nuevo.
Ejemplo:
$oldDate = strtotime('03/08/2020');
$newDate = date('Y-m-d',$time);
echo $newDate;
//output: 2020-03-08
Nota: Hay una gran diferencia entre / y - cuando se usa como divisor al formatear una fecha, si el separador es un / entonces se asume el formato americano m/d/y; y si el divisor es un -, entonces se asume el formato europeo d-m-y. Para evitar la ambigüedad, se recomienda utilizar las fechas ISO 8601 (YYYY-MM-DD).
Usando DateTime::createFromFormat o date_create_from_format
El DateTime::createFromFormat es una función incorporada de PHP que devuelve un nuevo objeto DateTime que representa el formato de la fecha y la hora. Por otro lado, date_create_from_format es un estilo de procedimiento que usa el DateTime::createFromFormat.
Parámetros:
Format(requerido) - Este parámetro especifica qué formato usar.Time(requerido) - Este parámetro representa la cadena de fecha/hora. Si este parámetro es NULL, entonces usará la fecha/hora actual.Timezone(opcional) - La zona horaria de la hora. El valor predeterminado es la zona horaria actual.
Ejemplo de DateTime::createFromFormat.
echo $dateNew = DateTime::createFromFormat('m-d-Y', '03-08-2020')->format('Y/m/d');
//output: 2020/03/08
Ejemplo de date_create_from_format
echo $dateNew = date_create_from_format("m-d-Y", "03-08-2020")->format("Y-m-d");
//output: 2020/03/08
La única diferencia entre date_create_from_format y DateTime::createFromFormat es que DateTime::createFromFormat no está disponible en PHP 5.2 y posteriores.