Neste tutorial mostraremos como subtrair ou somar dias de uma data qualquer - utilizando a função strtotime().

Função Strtotime / Função Date (ou Função Strftime)

Função strtotime — Interpreta qualquer descrição de data/hora em texto em inglês em timestamp Unix. Veja a referência completa no link: Referência strtotime PHP

1. A função strototime interpreta os termos inglês de dia (day), hora (hour), minuto (minute), segundo(second), mês (month), semana (week), ano(year), etc. e transforma em um número sequencial do UNIX, denominado Timestamp, que é o tempo em segundos contado desde 01 de janeiro de 1970. Este formato facilita e deve ser utilizado para os cálculos com datas e horas.

Veja o exemplo abaixo:

<?php
echo '<h1> Funcão strtotime</h1>';
echo '<h3> Datas transformadas em Timestamp Unix</h3>';

echo(strtotime("now") . "<br/>");
echo(strtotime("3 October 2005") . "<br/>");
echo(strtotime("+5 hours") . "<br/>");
echo(strtotime("+1 week") . "<br/>");
echo(strtotime("+1 week 3 days 7 hours 6 minutes 5 seconds") . "<br/>");
echo(strtotime("today") . "<br/>");
echo(strtotime("last Sunday") . "<br/>");
echo(strtotime("14-08-2016"));
?>

2.  Para melhor entendimento do código, faça o teste no aplicativo PHP Squids Editor. Clique no botão [Run] para visualizar o resultado.

2.1. Veja a imagem do resultado abaixo (registrado no dia 29/12/2016):

3. Para retornar o Timestamp Unix em um formato de data e hora, utilize a função date(). Informe o tipo de formato que você deseja - veja a tabela no link: https://secure.php.net/manual/pt_BR/function.date.php

<?php
echo '<h1> Funcão date</h1>';
echo '<h3> Datas transformadas de Timestamp Unix para formato data</h3>';

echo date('d-m/Y',(strtotime('now'))) . '<br/>';
echo date('d , M, Y',(strtotime('today'))) . '<br/>';
echo date('d F - H:m',(strtotime("last Sunday"))) . "<br/>";
echo date ('d|m|y',(strtotime("14-08-2016")));
?>

4. Para melhor entendimento do código, faça o teste no aplicativo PHP Squids Editor. Clique no botão [Run] para visualizar o resultado.

4.1. Veja a imagem do resultado abaixo (registrado no dia 29/12/2016):

laughing Dica: Se desejar formatos de data/tempo mais elaboradas e de acordo com a configuração do seu idioma, utilize a função strftime no lugar da função date. Veja a referência completa no link: Referência strftime PHP. Leia também: Como converter data do MySQL para o formato padrão BR (brasileiro).

Subtrair ou somar dias em uma data qualquer

5. Agora que já vimos um pouco sobre as funções strtotime e date, fica fácil entender como calcular datas em PHP. Veja o nosso exemplo a seguir:

<?php
// Soma 15 dias a partir da data indicada
echo date('d/m/Y', strtotime('+15 days', strtotime('3 October 2015')));
// Resultado: 18/10/2015

echo '<br /><br/>';

// Subtrai 25 dias a partir da data indicada
echo date('d/m/Y', strtotime('-25 days', strtotime('14-12-2016')));
// Resultado: 19/11/2016

echo '<br /><br/>';

// Soma 10 dias a partir da data de hoje
echo date('d/m/Y', strtotime('+10 days'));
// Resultado: 08/01/2017

echo '<br /><br/>';

// Subtrai 10 dias a partir da data de hoje
echo date('d/m/Y', strtotime('-10 days'));
// Resultado: 19/12/2016
?>

6. Para melhor entendimento do código, faça o teste no aplicativo PHP Squids Editor. Clique no botão [Run] para visualizar o resultado.

6.1. Veja a imagem do resultado abaixo (registrado no dia 29/12/2016):

Explicando o código

Subtrair ou somar dias a partir de hoje:

// Soma 10 dias a partir da data de hoje
echo date('d/m/Y', strtotime('+10 days'));
// Resultado: 08/01/2017

echo '<br /><br/>';

// Subtrai 10 dias a partir da data de hoje
echo date('d/m/Y', strtotime('-10 days'));
// Resultado: 19/12/2016

No exemplo, a função strtotime('+10 days') soma o total de segundos de 10 dias (+ 10 days) com o total de segundos do dia de hoje, contados desde 1 de janeiro de 1970 (sequência timestamp Unix utilizado para controlar datas no PHP).

A função date retorna o valor do sequencial timestamp determinado pela função strtotime, no formato 'd/m/Y' (dia/mês/ano). Desta forma, obteremos a soma de 10 dias a partir de hoje.

De forma similar, o mesmo acontece para a subtração.

Subtrair ou somar dias a partir de uma data indicada:

// Soma 10 dias a partir da data de hoje
echo date('d/m/Y', strtotime('+10 days'));
// Resultado: 08/01/2017

echo '<br /><br/>';

// Subtrai 10 dias a partir da data de hoje
echo date('d/m/Y', strtotime('-10 days'));
// Resultado: 19/12/2016

No exemplo, a função strtotime('+15 days', strtotime('3 October 2015')) soma o total de segundos de 15 dias (+ 15 days) com o total de segundos do dia 03 de outubro de 2015 ('3 October 2015'), contados desde 1 de janeiro de 1970 (sequência timestamp Unix utilizado para controlar datas no PHP).

A função date retorna o valor do sequencial timestamp determinado pela função strtotime, no formato 'd/m/Y' (dia/mês/ano). Desta forma, obteremos a soma de 10 dias a partir de hoje.

De forma similar, o mesmo acontece para a subtração.

COMENTÁRIOS