Cómo convertir una cadena a fecha y hora en PHP

Ralfh Bryan Perez 30 enero 2023
  1. Combinación de strtotime() y date
  2. Usando DateTime::createFromFormat o date_create_from_format
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

Artículo relacionado - PHP String