COMO CRIAR ROTINA PARA INFORMAR DADOS

Como tratar último dia em PHP para relatório do dia anterior? Como tratar último dia em PHP para relatório do dia anterior?

Como tratar último dia em PHP para relatório do dia anterior?

Para controlar a data em dias uso date e mktime, depois coplemento para virada do mês com explode.

Quando vou trabalhar com um período em dias no PHP costumo usar o seguinte código:

<?php

    $dia = date('d') -1; // Esse menos 1 aqui é para se referir ao dia anterior.
    $mes = date('m'); // O date pega a data atual.
    $ano = date('Y'); // Ele recebe como parâmetro o d, m e Y para dia, mês e ano respectivamente.
    $data = mktime(0,0,0,$mes,$dia,$ano);

// A função mktime() retorna o timestamp Unix dos argumentos informados.    

    $data = date('Y-m-d',$data); // Aqui o date não considera a data atual, mas sim o segundo parâmetro informado com a data definida anteriormente e junta ano, mês e dia para inserir a data no formato mais usado em banco de dados, o formato date original.

?>

Nesse exemplo estou pegando o dia anterior mas poderiam ser 15 ou 90 dias, ou qualquer outra quantidade, bastaria substituir o 1 por esses valores.

Mas se fosse usar em uma rotina assim como está, em que todos os dias tivessem que pegar o dia anterior, na virada do mês provavelmente teria problema, não pela data em si, pois essa já estaria correta, mas pelo dia, mês ou ano que se fosse o primeiro do próximo ciclo ficaria zerado. 

No caso do dia 01/10/21 se fosse usar $dia."/".$mes."/".$ano; ficaria 0/10/21, agora se fosse 01/01/21 ficaria 0/0/22 e não é esse o resultado esperado.

então complemento com explode, assim:

if($dia == 0){ // Vejo se o dia está zerado, no caso de dia primeiro (1 - 1).

    $ultimoDia = explode('-',$data); // Uso explode na data formatada.

    $ano = $ultimoDia[0]; // Insiro a parte referente ao ano na variável respectiva.

    $mes = $ultimoDia[1]; // Faço o mesmo para o mês.

    $dia = $ultimoDia[2]; // Também para o dia.

}

No caso o explode transforma uma string em um array de substring, após fazer a quebra do texto inicial de acordo com um limitador, nesse exemplo o traço "-".

Veja mais em:

Como preencher zero a esquerda em PHP?

Como tratar data em PHP?

Como usar o explode do PHP no JavaScript?



botão de compartilhamento whatsapp botão de compartilhamento no twiter botão de compartilhamento do site botão de compartilhamento no linkedin botão de compartilhamento whatsapp