Comparando datas com a declaração if

Meu objetivo pretendido é ver se a postagem permite comentários e, em caso positivo, verifique se a data_comments_expires NÃO é anterior ao dia decorrido. Não tenho certeza de como terminar essa declaração if. Qualquer ajuda?

if ($mainNews[0]['allow_comments'] == 'Yes' AND $mainNews[0]['date_comments_expire'] == ) {

EDITAR:

Aqui está meu código atualizado no qual estou recebendo uma chamada para a função de membro getTimeStamp de não objeto

if ($mainNews[0]['allow_comments'] == 'Yes' AND $mainNews[0]['date_comments_expire']->getTimestamp() > time() ) {
                    echo "".$mainNews[0]['number_of_comments']."";   
                }    
0
date_comments_expire é um campo de data e hora
adicionado o autor Jeff Davidson, fonte
O que $ mainNews [0] ['date_comments_expire'] contém?
adicionado o autor str, fonte
date_comments_expire é um campo DATE do MySQL?
adicionado o autor budwiser, fonte
@Book: Eu acho que essa é a parte "Eu não tenho certeza como terminar esta declaração", ele não sabe o que colocar depois do último == .
adicionado o autor mu is too short, fonte
você sente falta de algo ] ==) ?
adicionado o autor Book Of Zeus, fonte

1 Respostas

Isso depende inteiramente do conteúdo do índice date_comments_expire da sua matriz. Eu esperaria que fosse um timestamp unix declarando quando os comentários expiram, ou uma interpretação textual razoável dos mesmos.

Se você está usando um timestamp unix, então você está indo muito bem. Se for texto, você precisará convertê-lo em um timestamp unix antes de continuar. A melhor função para isso é strtotime() . Ele pode analisar uma variedade de representações de data e hora textual e retornará um registro de data e hora unix como resultado.

Depois de ter o ponto final representado como timestamp, você pode compará-lo com o horário atual. Para isso, você pode usar o time() , que retorna a hora atual como timestamps unix.

Como os timestamps unix são apenas inteiros (especificamente, o número de segundos desde 1º de janeiro de 1970), essa é uma comparação simples.

No final, seu código ficaria assim:

// convert to timestamp if necessary, remove if unneeded
$commentExpiry == strtotime($mainNews[0]['date_comments_expire']);

if ($mainNews[0]['allow_comments'] == 'Yes' AND 
    $commentExpiry > time()) {
  //submit comments
} else {
  //error handling
}

2
adicionado
E se o campo date_comments_expire for um formato datetime?
adicionado o autor Jeff Davidson, fonte
Eu atualizei meu código acima.
adicionado o autor Jeff Davidson, fonte
Eu já disse que é um campo de datetime
adicionado o autor Jeff Davidson, fonte
@JeffDavidson Você quer dizer que é um objeto PHP DateTime? Nesse caso, você pode usar DateTime :: getTimestamp() para obter o carimbo de data/hora Unix e compará-lo como acima. Basicamente, essa parte do condicional torna-se $ mainNews [0] ['date_comments_expire'] -> getTimestamp ()> time()
adicionado o autor AgentConundrum, fonte
@JeffDavidson Ok, então você não está usando objetos PHP DateTime. Você pode me mostrar exatamente como $ mainNews [0] ['date_comments_expire'] é gerado? Este é um campo que você obteve de um banco de dados? Em caso afirmativo, qual banco de dados e qual é o tipo de dados do campo?
adicionado o autor AgentConundrum, fonte
@JeffDavidson Certo, mas há também um objeto DateTime no PHP, que é o que me confundiu. Eu suponho que você está falando sobre o tipo de dados DATETIME do MySQL agora, caso em que o strtotime() não deve ter um problema com ele, que é o que eu originalmente recomendei. Isso lhe deu um erro? (Eu assumi por "o que se é um formato datetime" que você quis dizer o PHP DateTime, desde que a resposta que eu já tinha dado a você funcionaria na versão do MySQL)
adicionado o autor AgentConundrum, fonte
PHP Brasil
PHP Brasil
3 048 dos participantes

Neste grupo pregamos o respeito ao próximo e não são permitidas ações que sejam contrárias à isso. Conduta: https://bit.ly/2CImbaA Off-topic: https://bit.ly/2x64Dzf Blog: https://brasil-php.github.io/blog Use /rules para ver detalhes das regras

PHP Brasil Off
PHP Brasil Off
167 dos participantes

Regras: não há regras