Cómo convertir una cadena a fecha y hora en PHP
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.
Artículo relacionado - PHP Date
- Cómo añadir días a la fecha en PHP
- Cómo calcular la diferencia entre dos fechas usando PHP
- Cómo convertir DateTime a cadena en PHP
- Cómo convertir un formato de fecha a otro en PHP
- Cómo obtener la fecha y hora actuales en PHP