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