Função para somar data em php

Olá pessoal! No post de hoje vou mostrar pra vocês uma função que com certeza já lhe fez falta algum dia ou que ainda lhe será útil em um projeto futuro.

Trata-se de uma função para somar datas. Com ela é possível se obter uma nova data através da inserção de dias, meses e anos.

Vamos à implementação da função:

1
2
3
4
5
6
<?php
function somar_data($data, $dias, $meses, $ano){
  $data = explode("/", $data);
  $resData = date("d/m/Y", mktime(0, 0, 0, $data[1] + $meses, $data[0] + $dias, $data[2] + $ano));
  return $resData;
}

Função extremamente fácil de ser utilizada. Basta passar uma data qualquer no formato dd/mm/aaaa e os dias, meses e anos a se contabilizar (respectivamente).

Veja os exemplos à seguir:

1
2
3
4
5
6
7
8
9
10
<?php
/* Somar 45 dias ao dia 07/05/2012 */
echo somar_data('07/05/2012', 45, 0, 0); /* Imprime 21/06/2012 */
 
/* Somar 6 meses ao dia 28/02/2012  */
echo somar_data('28/02/2012', 0, 6, 0); /* Imprime 28/08/2012 */
 
/* Somar 2 anos, 3 meses e 10 dias ao dia 01/01/2012 */
echo somar_data('01/01/2012', 10, 3, 2); /* Imprime 11/04/2014 */
?>

Desfrutem sem moderação.

Abs!

Siga-me no twitter: @rafaelwendel

É formado em Sistemas de Informação, pós-graduado em Sistemas de Banco de Dados e mestre em Educação com foco em Tecnologias Sociocomunitárias. Trabalha como professor de ensino técnico e tecnológico no Instituto Federal de Educação, Ciência e Tecnologia de São Paulo ministrando disciplinas nas áreas de programação, banco de dados, desenvolvimento de projetos e engenharia de software.

Posts relacionados

Comentários

  1. Fala Rafael, blz?

    Parabéns por manter seu Blog atualizado! Os novos posts sobre o Codeigniter estão muito bacanas, com certeza vai ajudar MUITO ao final do tema! 😉

    Uma dúvida relacionada a soma:

    Como consigo somar esses valores, em milhão, com php?

    $ValorUm = ‘4.317.737,36’;
    $ValorDois = ‘1.468.657,89’;
    $ValorTotal = $ValorUm + $ValorDois;
    echo $ValorTotal;

    Já tentei diversas formas como: Tirar a virgula dos decimais, tirar os pontos e virgulas e adicionar o number_format na exibição. Mas nenhuma das formas está correta. Normalmente ele mostra apenas X.xxx ou Então XXX.xxx.XXX,xx (adicionando 2 zeros ao final).
    Mas o correto seria: X.xxx.XXX,xx

    Não sei se entendeu. Mas agradeço desde já a ajuda que sempre dá à nós, leitores! 😉

    Valeuuuuu
    Abraço,

    1. Olá Willian,

      Primeira coisa que está errada. Se são variáveis numéricas, os valores não devem vir entre aspas. Segundo, separe com o ponto apenas as casas decimais.

      Assim funciona:

      1
      2
      3
      4
      
      $ValorUm = 4317737.36;
      $ValorDois = 1468657.89;
      $ValorTotal = $ValorUm + $ValorDois;
      echo $ValorTotal;

      Té mais!

  2. Obrigado pelo seu post.

    Vc sabe como implementar datas para carnê? Tenho um script de 3 boletos por página mas a data de vencimento nas parcelas sempre é a msm. Gostaria que ele fizesse a soma 30, 60, 90, 120, e assim sucessivamente, já tentei de tudo e nada.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *