Como posso comparar duas datas no PHP?
A data é armazenada no banco de dados no seguinte formato
2011-10-2
Se eu quisesse comparar a data de hoje com a data no banco de dados para ver qual é maior, como eu faria isso?
Eu tentei isso,
$today = date("Y-m-d");
$expire = $row->expireDate //from db
if($today < $expireDate) { //do something; }
mas realmente não funciona dessa maneira. Qual é outra maneira de fazer isso?
Respostas:
Armazene-o em AAAA-MM-DD e a comparação de cadeias funcionará porque '1'> '0' etc.
fonte
2016-03-27 11:59:47 ::: 2016-03-14 10:30:00
?Se todas as suas datas forem posteriores a 1º de janeiro de 1970, você poderá usar algo como:
Se você estiver usando PHP 5> = 5.2.0, poderá usar a classe DateTime:
Ou algo nesse sentido.
fonte
1st of January of 1970
se aplica apenas às versões antigas do PHP em execução no Windows e nunca foi um problema no Unix.strtotime
retornará false para datas maiores. stackoverflow.com/questions/2012589/…DateTime
método é o método preferido. Esse objeto pode fazer muito mais do questrtotime
nunca.new DateTime('now')
também trabalha para recuperar a data de hojeApenas para complementar as respostas já fornecidas, consulte o seguinte exemplo:
Atualização: Ou use a função date () da velha escola :
fonte
Eu não faria isso com PHP. Um banco de dados deve saber, que dia é hoje. (Use MySQL-> NOW () por exemplo), para que seja muito fácil comparar dentro da Consulta e retornar o resultado, sem problemas, dependendo dos tipos de datas usados
fonte
fonte
Aqui está uma maneira de obter a diferença entre duas datas em minutos.
fonte
Você pode converter as datas em timestamps UNIX e comparar a diferença entre elas em segundos.
fonte
Eu também tive esse problema e resolvo-o da seguinte maneira:
fonte
Aqui está minha explicação sobre como obter a diferença de dias entre duas datas com o PHP. Observe o uso de '!' no formato para descartar a parte da hora das datas, graças a informações de DateTime createFromFormat sem hora .
fonte
Encontrei a resposta em um blog e é tão simples quanto:
E você terá os dias entre as 2 datas.
fonte
Isso funciona devido à lógica de comparação de strings do PHP. Simplesmente você pode conferir ...
Ambas as datas devem estar no mesmo formato. Os dígitos precisam ser preenchidos com zero à esquerda e ordenados do mais significativo para o menos significativo.
Y-m-d
eY-m-d H:i:s
satisfazer essas condições.fonte
d-m-Y
não funcionará ..Y-m-d
(com zero à esquerda como 08/05/2016) funcionará. Confira essas datas nod-m-Y
formato01-10-2016
e20-02-2016
, comparando como strings 0 <2, ele vai parar de comparar, mas incorretamente ...2011-10-2
.Se você deseja que uma data ($ date) expire em algum intervalo, por exemplo, uma data de validade do token ao executar uma redefinição de senha, veja como você pode:
Mas no seu caso, você pode fazer a comparação da seguinte maneira:
fonte
requestDate()
método mágico faz - não há menção a ele em nenhum lugar. Eu não usaria sua resposta, nem recomendo que qualquer pesquisador use sua solução. Não me prevejo mudar meu voto.Antes de tudo, tente fornecer o formato desejado para a data e hora atuais do seu servidor:
Obter data e hora atual
$ current_date = getdate ();
Data e hora separadas para gerenciá-las como desejar:
$ current_date_only = $ current_date [ano] .'- '. $ current_date [mon] .'-'. $ current_date [mday]; $ current_time_only = $ current_date ['horas']. ':'. $ current_date ['minutos']. ':'. $ current_date ['segundos'];
Compare-o dependendo se você estiver usando data ou hora do donly no seu banco de dados:
$ today = $ current_date_only. ' '. $ current_time_only;
ou
$ today = $ current_date_only;
if ($ today <$ expireDate)
espero que ajude
fonte