• 0
Sign in to follow this  
Luiz Itatiba

Como fazer com que a informação da Hora correta seja mostrada corretamente no Switch Case

Question

Olá baseado no código abaixo montei um switch ao qual o propósito fosse que em cada hora ou maior do que determinado horário e baseado no mesmo horário fosse mostrada uma determinada informação – só que mesmo quando chega no segundo horário '18:50:00’ ele continua mantendo a informação do primeiro horário em outras palavras ele não muda o que estari faltando no código do swith case abaixo para que a informação retorna-sse corretamente

 

<?php 
	// DEFINE O FUSO HORARIO COMO O HORARIO DE BRASILIA
    date_default_timezone_set('America/Sao_Paulo');
	
//echo date('h:i:s').'<br />'; //Resultado: 06:52:49
//HORA FORMATO BRASILEIRO
$hora = date('H:i:s'); //Resultado: 18:52:03

switch (true) {
  case ($hora == '16:30:00' || $hora >= '16:30:00'):
        echo 'Informação da Hora';
        break;

    case ($hora == '18:50:00' || $hora >= '18:50:00'):
        echo 'Informação do Horário';
        
		break;
}


?>

NO AGUARDO SE alguém PUDER ME AJUDAR E DESDE JÁ AGRADEÇO

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Esse formato de data e hora não são contados como números e sim como STRING, então o IF ou CASE nunca irá conseguir saber quem é maior que quem.

Não posso testar agora, mas tente usar strtotime()

Antes da Swicth

$hora = strtotime($hora);

 

Um dos case, faça o mesmo no outro.

case ($hora == strtotime('16:30:00') || $hora >= strtotime('16:30:00')):

 

Share this post


Link to post
Share on other sites
  • 0

Boa tarde o problema é que no primeiro case você usou o ou e uma das comparações esta dando sempre True , pois o horario das 18:50 ou superior também é maior que 16:30 , tente o codi abaixo.

<?php


    // DEFINE O FUSO HORARIO COMO O HORARIO DE BRASILIA
    date_default_timezone_set('America/Sao_Paulo');
    
//echo date('h:i:s').'<br />'; //Resultado: 06:52:49
//HORA FORMATO BRASILEIRO
$hora = date('H:i:s'); //Resultado: 18:52:03

switch (true) {
      case ( $hora >= '16:30:00' && $hora  < '18:50:00'):
        echo 'Informação da Hora ';
        break;

    case ($hora >= '18:50:00'):
        echo 'Informação do Horário ';
        
        break;
}

?>

 

Edited by Fabio Soares
error de português

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this