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?
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 sintaxe date()
- 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:
$old_date = date('l, F d y h:i:s'); // returns Saturday, January 30 10 02:06:34
$old_date_timestamp = strtotime($old_date);
$new_date = date('Y-m-d H:i:s', $old_date_timestamp);
Você precisa converter o $old_date de volta em um timestamp, pois a função de data requer um timestamp como seu segundo argumento.