Comparação com variáveis timestamp Olá amigos! Sou iniciante no PHP e é a primeira vez que preciso comparar campos timestamp. Criei o código abaixo no mas não funcionou. ...
GO
Comparação com variáveis timestamp  
Olá amigos!
Sou iniciante no PHP e é a primeira vez que preciso comparar campos timestamp. Criei o código abaixo no mas não funcionou.

 
  1. <?php
  2. date_default_timezone_set('America/Sao_Paulo');
  3. $data_hora_inicio = date('d/m/Y H:i:s', strtotime('2017-01-01 00:59:00'));
  4. $data_hora_fim = date('d/m/Y H:i:s', strtotime('2020-12-31 07:53:00'));
  5. $data_hora_atual = date('d/m/Y H:i:s');
  6. echo 'Data atual: '. $data_hora_atual . '<br>';
  7. echo 'Data inicio: '. $data_hora_inicio . '<br>';
  8. echo 'Data fim: '. $data_hora_fim . '<br>';
  9. if (!(( $data_hora_atual >= $data_hora_inicio) && ($data_hora_atual <= $data_hora_fim )))
  10. {
  11. echo 'Dentro do periodo' . '<br>';
  12. }
  13. else
  14. {
  15. echo 'Fora do período' . '<br>';
  16. }
  17. ?>


Esse código imprimiu esse resultado na tela:

Data atual: 11/07/2018 00:31:28
Data inicio: 01/01/2017 00:59:00
Data fim: 31/12/2020 07:53:00
Fora do período

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (5)


LA

Ola Geovani,
tira o !()
O seu codigo esta assim: Se NÂO(!) retornar TRUE executa o 1º bloco.

 
  1. <?php
  2. $data_hora_inicio = date('d/m/Y H:i:s', strtotime('2017-01-01 00:59:00'));
  3. $data_hora_fim = date('d/m/Y H:i:s', strtotime('2020-12-31 07:53:00'));
  4. $data_hora_atual = date('d/m/Y H:i:s');
  5. if (($data_hora_atual >= $data_hora_inicio) && ($data_hora_atual <= $data_hora_fim)) {
  6. echo 'Dentro do periodo' . '<hr>';
  7. } else {
  8. echo 'Fora do período' . '<hr>';
  9. }
  10. echo $data_hora_inicio . '<br>';
  11. echo '<b>' . $data_hora_atual . '</b><br>';
  12. echo $data_hora_fim . '<br>';
  13. ?>
NR

A função date retorna uma string, então você não está comparando timestamp e sim strings. Por isso que comparações de data em formato brasileiro não dão certo:
01/12/18 < 03/01/18, pois 01 é menor que 03.

Faça a comparação usando o formato americano(ano/mes/dia) ou compare diretamente o timestamp
GO

Olá Nataniel!
Então , para comparar o timestamp eu devo usar qual função de conversão? Eu usei algumas mas não consegui. :/ Acho que vou acabar comparando no formato americano mesmo.
MC

Cuidado com o formato completo do timestamp, pois ele tem minutos e segundos, se precisar comparar, pegue somente a data, para isso vc pode usar a função explode(' ',''), para extrair somente a data antes do espaço (em formato americano)
GO

Olá Miuller!
Eu precisa comparar também com a hora. A intenção é saber se eu tenho que irar uma promoção do ar ela pode durar dias ou minutos. E tudo deve ser agendado.