Jump to content
Blogger

Horario do dia seguinte

Recommended Posts

Boa noite pessoal, eh meu primeiro topico aqui, preciso muito da ajuda de voces para resolver uma questao em meu site...

Tenho um aplicativo que puxa algumas informacoes do meu site via http.. certo..

uma delas sao 2 horarios, de abertura e de fexamento, supoe o seguinte:

 

HorInicio: 8:00

Horfim: 18:00     

No php fica assim..

(esse date(`w`) == 2) confere se hoje eh terca feira, tenho um desse para cada dia da semana)

if(date('w') == 2){
    // caso a hora atual for maior ou igual a hora inicio e menor ou igual ao fim ele manda true para meu app e ele entende que esta aberto
    if(date('H:i') >= $ini AND date('H:i') <= $fim){
        echo true;
    } else {
        echo 0;
    }
}

Eu consegui configurar de uma forma que ele entenda que o estabelecimento fica aberto entre esses dois horarios, porem, surgiu a necessidade de colocar o seguinte:

HorInicio:18:00

Horfim: 2:00 (Sendo esse horario duas horas da madrugada do dia seguinte)

 

a questao eh, como fazer meu codigo de php entender que essas 2:00 se trata do dia seguinte? pois da forma atual ele pega o intervalo entre 2:00 e 18:00 (3:00, 4:00, ate as 18:00)

e eu gostaria que fosse das 18:00 para frente (19:00, 20:00, ate as 2:00)

 

No meu banco esta definido apenas como tempo atual sem a data, eh possivel fazer sem cadastrar uma data no banco? apenas com o tempo... e se nao for possivel, como fazer isso ser automatico? toda vez que ele for entrar nesse php ele entender qual dia eh hoje e que fica aberto ate amanha ate que horas..

 

Desculpe se ficou meio confuso.. mas qualquer duvida podem perguntar que eu vou responder, espero alguma luz, obrigado!

 

Edited by Gabriel Heming
adicionar marcação de código

Share this post


Link to post
Share on other sites

Fica mais fácil se você utilizar a biblioteca DateTime

 

Pode ser assim:

$start = DateTime::createFromFormat('H:i' , '18:00');
$end = DateTime::createFromFormat('H:i' , '02:00')->add(new \DateInterval('P1D'));

$now = new \DateTime();

if ($now >= $start && $now < $end)
{
     echo "Aberto";                                 
}

Criando uma data com horário 02:00am e adicionado mais um dia (new \DateInterval('P1D')).

 

ou

$start = DateTime::createFromFormat('H:i' , '18:00');
$end = (new \DateTime('tomorrow'))->setTime(2 , 0);

$now = new \DateTime();

if ($now >= $start && $now < $end)
{
     echo "Aberto";                                 
}

Criando uma data de amanhã (tomorrow) e definindo o horário as 02:00am

 

Ambos podem ser comparados de forma strict, ou seja, usando diretamente conforme no exemplo.

 

Pode verificar o código em funcionamento: https://3v4l.org/ARTOs

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By gilcasaoutlook
      Senhores.
      Gostaria de Executar uma StoredProcedure em MySql
      e o resultado retornar em um DataTable.
      mas o retorno do DataTable não está dando certo.
      Tenho uma conexão com o mysql:
      public class Conexao
              private MySqlConnection conexao = null;
              private DataTable dt;
              private MySqlDataAdapter da;
              private MySqlCommandBuilder cb;
              private MySqlDataReader dr;
              private MySqlParameter[] pms;
              string StrConexao = "server=" + ConfigurationManager.AppSettings["server_name"] + ";" +
                                            "dataBase=" + ConfigurationManager.AppSettings["data_base"] + ";" +
                                            "port=" + ConfigurationManager.AppSettings["port_number"] + ";" +
                                            "User Id=root;" +
                                            "password=root";
              // Metodo conectar no banco.
              public MySqlConnection AbrirConexao()
              {
                  try
                  {
                      conexao = new MySqlConnection(StrConexao);
                      conexao.Open();
                      return conexao;
                  }
                  catch (Exception erro)
                  {
                      throw erro;
                  }
              }
      }
      Conexão está funcionando porque utilizo ela em outro recurso.
      Tenho uma Stored Procedure em MySql:
      CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_seleciona_pessoa`()
      BEGIN
          
          select id, nome from pessoa;
          
      END
      Tenho uma função que retorna um DataTable:
       public DataTable RetDataTableStoredProc()
      {
                      MySqlCommand cmd = new MySqlCommand();
                      AbrirConexao();
                      cmd.Connection = conexao;
                      cmd.CommandType = CommandType.StoredProcedure;
                      cmd.CommandText = StoredProc;
                      dr = cmd.ExecuteReader();
                      dt.Load(dr);
                      return dt;
      }                
      O comando dr = cmd.ExecuteReader(); passa sem dar erro
      mas quando executo as duas linhas abaixo:
                      
                      dt.Load(dr);
                      return dt;
      e não retorna um DataTable.
      Conto com vossa ajuda.
      Att.
      Gilberto Rezende               
    • By maurouni
      Tenho uma tabela com preços de fornecedores e preciso de um select que me retorne apenas o melhor preço do fornecedor conforme ilustra a imagem em anexo.

    • By LisRaf
      Olá Pessoal!
       
      Estou tendo um problema com um link no site do meu cliente...esse link envia o usuário para pagina de acesso a um ambiente online do aluno... entretanto, o endereço para essa pagina só pode ser acessado quando os estudante estão fora do wifi da escola, do contrario eles não conseguem acessar pelo link que eu implementei na imagem que esta no site. Existe outro endereço para quem está conectado no wifi da escola, como sou iniciante, só sei que tenho que ter um código que quando o usuário clicar no link vai verificar se está conectado no servidor interno, se não, ele joga para o servidor externo, porem... Não faço a minima ideia de como estruturar esse código e linkar ele junto a imagem do site... se alguém puder me ajudar please!!! já pesquisei tudo e não consigo sozinha!
    • By ppanetony
      Olá!
       
      Estou com um sistema em php onde alguns código estão duplicados.
      São códigos pequenos, simples, de no máximo umas 3 linhas.
      Esses código se repetem por vários arquivos.
      Qual a melhor maneira de eu extrair esses códigos para deixa-los como funções?!
      Um arquivo com várias funções, uma classe deixando essas funções como static, ..., ... ?!
       
       
      Valeu!
       
    • By drx
      Bom dia pessoal!
      Primeiramente, me perdoem a ignorância se minha pergunta for cabeluda, beleza pessoal?
      Me tirem uma dúvida aqui se possível.
      Eu envio a divulgação de um produto via e-mail a um cliente e ele recebe  uma pagina em php certo? É óbvio que ele receberá em html e suas tags.
      Quando o cliente clicar na imagem, então ele é redirecionado para uma loja virtual, correto?
      Esta página, pode interagir com um código php embutido nesta página tal como, identificar origem, link de quem enviou ?
       
      Aguardo.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.