Convertir un formato de fecha en otro en PHP
¿Existe una forma sencilla de convertir un formato de fecha en otro formato de fecha en PHP?
Tengo esto:
$old_date = date('y-m-d-h-i-s'); // works
$middle = strtotime($old_date); // returns bool(false)
$new_date = date('Y-m-d H:i:s', $middle); // returns 1970-01-01 00:00:00
Pero, por supuesto, me gustaría que devolviera una fecha actual en lugar de la grieta 'o el amanecer. ¿Qué estoy haciendo mal?
321
3
El segundo parámetro de
date()
debe ser una marca de tiempo adecuada (segundos desde el 1 de enero de 1970). Está pasando una cadena, que date() no puede reconocer.Puede utilizar strtotime() para convertir una cadena de fecha en una marca de tiempo. Sin embargo, incluso strtotime() no reconoce el formato
y-m-d-h-i-s
.PHP 5.3 y superior
Utilice
DateTime::createFromFormat
. Le permite especificar una máscara exacta - usando la sintaxisdate()
- para analizar las fechas de cadena entrantes.PHP 5.2 e inferior
Tendrá que analizar los elementos (año, mes, día, hora, minuto, segundo) manualmente usando
substr()
y entregar los resultados a mktime() que le construirá una marca de tiempo.Pero eso'¡es mucho trabajo! Recomiendo usar un formato diferente que strftime() pueda entender. strftime() entiende cualquier entrada de fecha que no sea
la próxima vez que Joe resbale en el hielo
. por ejemplo, esto funciona:Prueba esto:
Tienes que volver a convertir $old_date en una marca de tiempo, ya que la función date requiere una marca de tiempo como segundo argumento.