Jump to content
leonardorocha

Problemas no intervalo de datas

Recommended Posts

Prezados, boa tarde!

 

Tenho uma apresentação que imprime determinados valores de acordo com a data cadastrada no sistema.

 

O código abaixo está funcionando para algumas datas e outras não. Um exemplo é o intervalo de datas 01/03/2019 a 30/06/2019

 

Este nunca é executado conforme o código abaixo. Se alguém souber aonde encontra-se o erro por favor me informe.

            <div class="row justify-content-md-center">            
                <?php 
                foreach ($model->getItems() as $calendar)
                    {
                        $dataI = date("d/m/Y", strtotime($calendar->start_date));
                        $dataF = date("d/m/Y", strtotime($calendar->end_date));
                        $titulo = $calendar->title;
                     ?>
                    <div class="col-md-3 col-sm-6">
                        <div class="item-calendario">
                            <div itemprop="event" itemscope itemtype="http://schema.org/Event">
                                <?php
                                    
                                    $atual = strtotime(date("d/m/Y"));
                                    $periodo = array('inicio' => strtotime($dataI), 'fim' => strtotime($dataF)); 

                                    if($atual >= $periodo['inicio'] && $atual <= $periodo['fim'] ){
                                        echo '<div class="icone-calendario"><i class="fa fa-clock-o fa-lg" aria-hidden="true" style="color:#0661ab"></i></div>
                                        <div class="status-calendario agora"><span>AGORA</span></div>';
                                    }
                                    if($atual < $periodo['inicio'] && $atual < $periodo['fim'] ){
                                        echo '<div class="status-calendario"><span>EM BREVE</span></div>';
                                    }                                 
                                ?>       
                                <div class="periodo-calendario" itemprop="startDate" content="{{startDateIso}}">
                                    <span><?php echo $dataI . ' a ' . $dataF ?></span>
                                </div>
                                <div class="texto-calendario">
                                    <a href="<?php echo $calendar->url; ?>" itemprop="url">
                                        <span itemprop="name"><?php echo $titulo; ?></span>
                                    </a>
                                </div>
                            </div>
                        </div>
                    </div>
                <?php } ?>
            </div>

 

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 Viniciusr9
      Boa tarde pessoal,
      basicamente eu preciso do retorno de horas entre duas datas, porém tenho condições a tratar .
      basicamente tenho 2 colunas ( dt_fim e dt_ini ) que representam data final e data inicial. Preciso da diferença entre as duas retornada em uma outra coluna (hr_ausencias) , porém a cada dia posso computar no máximo 9 horas, e desconsiderar finais de semana e feriados( esses cadastrados em uma tabela) . Seria melhor tratar isso com uma Trigger , um Script PL/SQL , como me sugerem? Agradeço quem puder ajudar.
    • By marcosberaldo
      Boa noite.
       
      Estou criando um ranking de pontuação e preciso colocar uma paginação nesse ranking mas não posso fazer a paginação pelo select, pois a select tem que somar os pontos de cada jogador informados em cada registro no banco, se eu limito a select ele só vai somar os pontos dos registros da página e não todos os pontos do jogador.
       
      Dessa forma optei por fazer a select normalmente e criar um array onde eu pretendo exibir somente parte dos dados.
       
      Em resumo, consegui fazer da seguinte forma:
      $dados = mysqli_query($conn, "SELECT *, sum(Pontos) as TotalPontos, sum(Acerto_Exato) as Acertos FROM placares INNER JOIN jogadores ON placares.JogadorID = jogadores.id WHERE campeonato='$campeonato' GROUP BY JogadorID ORDER BY TotalPontos DESC, Acertos DESC "); for($a = 0; $a < 9; $a++ ) { $row = mysqli_fetch_array($dados); echo $row['JogadorID']. " - " .$row['nome']; } Esse código me retorna 10 registros do array, até ai tudo bem, mas eu gostaria de exibir apenas um intervalo, por exemplo do registro 5 ao 9. 
      Tentei da seguinte forma:
      $dados = mysqli_query($conn, "SELECT *, sum(Pontos) as TotalPontos, sum(Acerto_Exato) as Acertos FROM placares INNER JOIN jogadores ON placares.JogadorID = jogadores.id WHERE campeonato='$campeonato' GROUP BY JogadorID ORDER BY TotalPontos DESC, Acertos DESC "); for($a = 5; $a < 9; $a++ ) { $row = mysqli_fetch_array($dados); echo $row['JogadorID']. " - " .$row['nome']; } Dessa forma ele me mostra apenas 5 registros, mas ele sempre me mostra os 5 primeiros e eu preciso carregar os últimos 5.
       
      Como faço???
    • By asacap1000
      Galera preciso de uma ajuda, não sei mais nem como procurar a cabeça está dando nó kkkk.
      Tenho projeto que estará controlando o tempo de acesso no estabelecimento impondo um limite de 100 minutos.
      Dentro do mesmo dia estou conseguindo realizar os calculos normais, porém se o usuário entrar 23:00 ele terá que sair no máximo às 00:40.
      O horário eu consegui montar conforme o select abaixo a data mantém a mesma da entrada.
      select aces.seqreg SEQUENCIA, aces.diracc SENTIDO, aces.horacc MINUTOS, --acesso em minutos (aces.horacc + 100) LIMITE, --limite de acesso foi adicionado mais 100 minutos CONVERT(varchar(2), Day(aces.datacc)) + '/' + CONVERT(varchar(2), MONTH(aces.datacc)) + '/' + CONVERT(varchar(4), Year(aces.datacc)) + ' ' + right( '00' + cast(aces.horacc / 60 as varchar), 2) + ':' + right( '00' + cast(aces.horacc - ((aces.horacc / 60) * 60) as varchar), 2 ) AS HORA,--data e hora de entrada CONVERT(varchar(2), Day(aces.datacc)) + '/' + CONVERT(varchar(2), MONTH(aces.datacc)) + '/' + CONVERT(varchar(4), Year(aces.datacc)) + ' ' + right( '00' + cast( ((aces.horacc + 100)%1440)/60 as varchar), 2) + ':' + right( '00' + cast(((aces.horacc + 100)%1440)%60 as varchar), 2 ) 'SAIDA', --data e hora que deve sair Convert(Char(5),GetDate(),114) ATUAL from kansas.kansas.r070ara aces LEFT JOIN kansas.kansas.r090mvi mv on aces.numcra = mv.numcra and aces.numdoc = mv.numdoc where CONVERT(DATETIME, CONVERT(NVARCHAR(10), aces.datacc, 103), 103) >= CONVERT(DATETIME, '29/09/2018', 103) and CONVERT(DATETIME, CONVERT(VARCHAR(10), aces.datacc, 103), 103) <= CONVERT(DATETIME, '29/09/2018', 103) and (aces.coddsp like '1') and aces.numdoc = '325605397' order by aces.seqreg, aces.nompes, aces.coddsp O problema está nesta parte do select:
       
      CONVERT(varchar(2), Day(aces.datacc)) + '/' + CONVERT(varchar(2), MONTH(aces.datacc)) + '/' + CONVERT(varchar(4), Year(aces.datacc)) + ' ' + right( '00' + cast( ((aces.horacc + 100)%1440)/60 as varchar), 2) + ':' + right( '00' + cast(((aces.horacc + 100)%1440)%60 as varchar), 2 ) 'SAIDA', --data e hora que deve sair A parte de data ele não traz a data seguinte na imagem abaixo a saída deveria ser 30/09/2018 01:27
       

       
      Alguém poderia me dar uma força tenho que entregar essa semana este projeto no trabalho e está muito punk a bagaça...
       
    • By maicon_m
      Olá,
       
      Apesar de pesquisar e tentar de diversas formas, não estou conseguindo. A situação é a seguinte:
       
      O hotel tem uma tabela com valores variáveis para as acomodações dependendo dos dias. 
       
      TABELA VALORES
      preço      data_inicio    data_fim
      150.00   2018-04-20    2018-04-23
      250.00   2018-04-24    2018-04-27
       
      Quando o usuário escolhe check-in e check-out dentro dos valores de uma linha, consigo retornar com o BETWEEN. Porém, se o usuário escolher data de entrada (23) e data de saída (24), preciso retornar apenas o valor de 150,00 que foi o dia do check-in. Mas não estou conseguindo pois a consulta retorna o valor com base do dia do check-out (250,00).
       
      Penso que a solução deste problema irá me ajudar a solucionar outro: quando o cliente escolhe alguns dias que se encaixam dentro de uma tarifa e outros dias em que a tarifa é diferente...
       
      Desde já, obrigado.
    • By klonder
      Tentei incluir a máscara a seguir em um POST meu antigo, porém está fechado para novas respostas:
       
      Todavia, para futuras consultas minhas e também para ajudar outras pessoas, venho deixar uma máscara interessante que acabei de terminar em JavaScript.
      Ficou muito menor que a do POST acima:
      <script type="text/javascript"> var iCount1; var trava = false; function MaskDown(e) { if (trava == false) { iCount1 = e.value.length; trava = true; } } function MaskUp(e,mascara) { if (trava) { var textoLimpo = e.value.substr(0,iCount1+1).replace(/[\/\:\-\.]/g,""); var texto = ""; var iM = 0; var iT = 0; while (iM < mascara.length) { if (iT < textoLimpo.length) { if (mascara.substr(iM,1) == "#") { texto += textoLimpo.substr(iT,1); iT++; } else { texto += mascara.substr(iM,1); } } iM++; } e.value = texto; trava = false; } } </script> Para funcionar, basta incluir em suas tags input os eventos, como demonstrado a seguir:
      <input type="text" id="tfData" onkeydown="MaskDown(this)" onkeyup="MaskUp(this,'##/##/####')" placeholder="dd/mm/aaaa" style="width:80px" /> <br /><input type="text" id="tfHora" onkeydown="MaskDown(this)" onkeyup="MaskUp(this,'##:##')" placeholder="hh:mm" style="width:50px"/> À medida que o usuário vai digitando, o valor campo vai sendo formatado. Pode ser usado para CPF, CEP, RG, dentre outros...
       
      Divirtam-se!
×

Important Information

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