Jump to content

Dúvida: Como que faço calculo entre datas com PHP


Jean Lima
Ir para a Solução Solucionado por Rogerio Santos,

Postagens Recomendadas

// PRECISO PEGAR UM CAMPO: Tdate e somar com outro campo total de dias, o o resultado em outro campo no formulario tipo Tdade com periodo.....mais esse campo so me retorna a data atual quando salva no BD........  e no Input Tdade  não acontece nada.....    estou usando esse codigo abaixo....
        
        $data_poda = (double) str_replace(',', '.', str_replace('.', '', $param['data_poda']));
        $dias_ciclo = (double) str_replace(',', '.', str_replace('.', '', $param['dias_ciclo']));

        $periodo_colheita = $data_poda + $dias_ciclo ;
        $object = new stdClass();
        $object->periodo_colheita = number_format($periodo_colheita, 2, ',', '.');
        TForm::sendData(self::$formName, $object);
    

Link to comment
Compartilhe em outros sites

  • Solução

Pelo que eu entendi, você quer somar um campo de data com outro campo de dias e obter o resultado em outro campo de data no formato brasileiro (d/m/Y). Para fazer isso, você precisa usar as funções date() e strtotime() do PHP, que permitem manipular datas e formatá-las de diferentes maneiras.

Uma possível solução para o seu problema é a seguinte:

$data_poda = $param['data_poda']; // Exemplo: '17/11/2023'
$dias_ciclo = $param['dias_ciclo']; // Exemplo: '10'

// Convertendo a data para o formato inglês (Y-m-d)
$data_poda_ingles = implode("-", array_reverse(explode("/", $data_poda))); // Exemplo: '2023-11-17'

// Somando os dias à data usando a função strtotime()
$data_somada = strtotime($data_poda_ingles . " +$dias_ciclo days"); // Exemplo: 1706524800

// Formatando a data somada para o formato brasileiro (d/m/Y) usando a função date() $periodo_colheita = date('d/m/Y', $data_somada); // Exemplo: '27/11/2023'

// Enviando o valor do campo período de colheita para o formulário
$object = new stdClass();
$object->periodo_colheita = $periodo_colheita;
TForm::sendData(self::$formName, $object);

 

Em resumo no exemplo vc pega a data converte para inglês que o padrão de datas do PHP e depois converte ela para timestamp que é o formato que o PHP manipula datas, feito isso soma o valor e converte para data formato Brasileiro

  • Amei 3
Link to comment
Compartilhe em outros sites

Cara...muito obrigado funcionou certinho........nem o chat GPT tinha solucionado...kkkk...Muito Obrigado mesmo, me salvou de dias quebrando a cabeça............agora só tem um detalhe, ele só funciona quando seleciono qualquer data dentro do campo, se estiver vazio não acontece nada,oque pode ser? teria uma maneira de quando abrir o formulário e os campos ser preenchido já calcular automaticamente ?

  • Amei 3
Link to comment
Compartilhe em outros sites

Por nada que bom que consegui ajudar, quanto a o novo caso não sei se entendi a duvida, mas seu problema é que quando abre o formulário a data esta vindo vazia e por isso não esta realizando o calculo automaticamente seria isso?
se for vc pode tentar validar a data antes da conversão, antes de converter para inglês vc valida se a data esta vazia e popular com a data atual por exemplo.

algo assim se for oq entendi:
if (empty($data_poda)) {

       // Se o campo de data estiver vazio, define a data atual como a data de poda

       $data_poda = date('d/m/Y');

}

  • Curtir 2
  • Amei 2
Link to comment
Compartilhe em outros sites

  • Douglas Garcia mudou o título para Dúvida: Como que faço calculo entre datas com PHP

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...