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.

Foi útil?

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
scroll top