Mais
Converter um formato de data em outro em PHP
Existe uma maneira simples de converter um formato de data em outro formato de data em PHP?
Eu tenho isto:
$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
Mas I'd claro que gostava de devolver uma data actual em vez do crack 'o amanhecer. O que eu estou fazendo de errado?
321
3
O segundo parâmetro para
date()
precisa ser um carimbo de tempo apropriado (segundos desde 1 de janeiro de 1970). Você está passando uma string, cuja data() pode't reconhecer.Você pode usar strtotime() para converter uma string de data em um carimbo de data/hora. Entretanto, mesmo strtotime() não reconhece o formato
y-m-d-h-i-s
.**PHP 5.3 e acima***
Utilize
DateTime::createFromFormat
. Ele permite que você especifique uma máscara exata - utilizando a sintaxedate()
- para analisar as datas de entrada de strings com.**PHP 5.2 e inferior***
Você terá que analisar os elementos (ano, mês, dia, dia, hora, minuto, segundo) manualmente utilizando
substr()
e entregar os resultados para mktime() que irá construir um carimbo de data/hora.Mas isso'é muito trabalho! Eu recomendo usar um formato diferente que strftime() possa entender. strftime() entende qualquer entrada de data que não seja
a próxima vez que joe escorregar no gelo
. por exemplo, isto funciona:Experimenta isto:
Você precisa converter o $old_date de volta em um timestamp, pois a função de data requer um timestamp como seu segundo argumento.