Converter data em timestap em PHP
Pergunta
Tentei várias respostas que encontrei no SO, mas ainda não consigo inserir uma data no carimbo de data/hora e sempre obtenho um resultado errado.
Eu tentei:
$date = $this->loadTemplate('element'); //2014-02-27 15:03:00
list($year, $month, $day, $hour, $minute, $second) = split('[- :]', $date);
$timestamp = mktime((int) $hour, (int) $minute,(int) $second,(int) $month,(int) $day,(int) $year);
echo date("r", $timestamp);
E o resultado que estou obtendo é:
Wed, 02 Dec 2026 00:00:00 -0700
O que estou fazendo de errado aqui?
EDITAR
Descobriu-se que o problema era um newline
que foi gerado por $date
.Eu tirei a corda de newlines
e funcionou perfeitamente.
Solução
Em vez de mktime
que tal strtotime
?Parece mais fácil.
$date = '2014-02-27 15:03:00';
echo date("r", strtotime($date));
// Outputs Thu, 27 Feb 2014 15:03:00 +0000
Na verdade, se você tiver PHP 5.2 e superior use DateTime
.
$date = new \DateTime('2014-02-27 15:03:00');
echo $date->format("r");
// Outputs Thu, 27 Feb 2014 15:03:00 +0000
Aqui está o ideia para mostrar isso.
Outras dicas
$date = $this->loadTemplate('element'); //2014-02-27 15:03:00
list($year, $month, $day, $hour, $minute, $second) = split('[- :]', $date);
$timestamp = mktime($hour, $minute,$second,$month,$day,$year);
echo date("r", $timestamp);
seu mktime está na ordem errada, veja acima
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow