Script calcular diferenca entre datas..

379 views
Skip to first unread message

Sergio

unread,
Jun 8, 2010, 1:28:30 PM6/8/10
to list...@googlegroups.com
Pessoal estou desenvolvendo um script para calcular diferenca entre datas
ex: data1 05/04/2010 e data final 14/12/2010 estou usando o seguinte
codigo abaixo, porem ao colocar a data de hoje (08) ao ives de diminiur
os dias aumenta..nao estou conseguindo resolver esse "bug"
Se alguem tiver um script melhor agradeco tbm..

Abraco

<?
//defino data 1
$ano1 = 2010;
$mes1 = 06;
$dia1 = 10;

//defino data 2
$ano2 = 2010;
$mes2 = 12;
$dia2 = 14;

//calculo timestam das duas datas
$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);
$timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2);

//diminuo a uma data a outra
$segundos_diferenca = $timestamp1 - $timestamp2;
//echo $segundos_diferenca;

//converto segundos em dias
$dias_diferenca = $segundos_diferenca / (60 * 60 * 24);

//obtenho o valor absoluto dos dias (tiro o poss�vel sinal negativo)
$dias_diferenca = abs($dias_diferenca);

//tiro os decimais aos dias de diferenca
$dias_diferenca = floor($dias_diferenca);

echo "Faltam $dias_diferenca para voce chegar!!<br><br>";

?>

Marcus Brasizza

unread,
Jun 9, 2010, 8:41:02 AM6/9/10
to list...@googlegroups.com
http://www.php.net/manual/pt_BR/function.date-diff.php

??

--
============================================================
LEIAM SEMPRE AS REGRAS DA LISTA: http://groups.google.com.br/group/listaphp/web/regras-da-lista-php
--
LISTA PHP > http://groups.google.com.br/group/listaphp
--
REVISTA PHP > http://www.revistaphp.com.br
--
AJAX-BRASIL > http://groups.google.com/group/ajax-brasil
--
PYTHON-GOOGLE > http://groups.google.com.br/group/python-google
--
DOTNET-BRASIL > http://groups.google.com.br/group/dotnet_br
============================================================

Rafael Eduardo Kassner

unread,
Jun 9, 2010, 8:46:58 AM6/9/10
to list...@googlegroups.com
PHP 5.3...

Elias

unread,
Jun 9, 2010, 8:48:37 AM6/9/10
to LISTA PHP
a diferença que eu percebi foi quanto se coloca $dia1 = 8 ou $dia1 =
08.
Assim $dia1 = '8' ou assim $dia1 ='08', com aspas a diferença não
existe.

Só não me pergunte porque acontece isso.

Andreus Timm

unread,
Jun 9, 2010, 8:54:07 AM6/9/10
to list...@googlegroups.com
Eu usaria da forma antiga...
com  strtotime, de uma olhada nessa função.


Andreus Timm
andreu...@gmail.com
(14) 9672-7890
(51) 9243-1668


Digital 3i Soluções em Website

unread,
Jun 9, 2010, 8:58:07 AM6/9/10
to list...@googlegroups.com
Duas coisas:

A função mkdir recebe strings como parâmetro e quando ele concatena os dados ele pode colocar o número em local errado. O importante é que, neste caso string não se comporta como inteiro ( o que é um hábito ruim entre programadores PHP e eu me incluo nisso).

A função date_diff não foi criada na versão 5.3. O que aconteceu na versão 5.3 é que agora ela deve ser chamada pela classe DateTime.

Um processo alternativo é você colocar a sua data no formato "YYYY-mm-dd hh:ii:ss" e utilizar a função strtotime. A diferença entre as datas será dada em segundos. Dividindo por (24[1 dia]*60[1 hora]*60[1 minuto]).

$dia1 = strtotime('2010-04-05')
$dia2 = strtotime('2010-12-14')

$diferença = $dia2 - $dia1;
$diferenca = $diferenca/(24*60*60);

Espero ter ajudado.

André Luiz Pinheiro
(21) 8875-9238
Digital 3i Soluções Web
www.digital3i.com


Em 9 de junho de 2010 09:48, Elias <eliasj...@gmail.com> escreveu:

Davi Tavares Alexandre

unread,
Jun 9, 2010, 8:58:47 AM6/9/10
to list...@googlegroups.com
Da diferença porque eles são diferentes.

Em 9 de junho de 2010 09:48, Elias <eliasj...@gmail.com> escreveu:

Elias

unread,
Jun 9, 2010, 9:45:20 AM6/9/10
to LISTA PHP
Putz... nem lembrava que inteiro começado em 0 era octal.

On 9 jun, 09:58, Davi Tavares Alexandre <bastardgob...@gmail.com>
wrote:
> Da diferença porque eles são diferentes.
>
> http://www.php.net/manual/en/language.types.integer.php
>

andreencinas

unread,
Jun 10, 2010, 1:15:27 AM6/10/10
to LISTA PHP
veja se serve para vc
http://www.php.net/manual/en/ref.datetime.php#57251

vlw



On 8 jun, 14:28, Sergio <ser...@tworksnet.com.br> wrote:

Marcelo Wergles

unread,
Jun 12, 2010, 12:08:29 AM6/12/10
to list...@googlegroups.com
diretamente do manual:

<?php
$data = Array('12.06.2010','05.07.2010');
$dias = 0;
while (strtotime($data[1]) >= strtotime('+'.$dias.' day',strtotime($data[0]))) {
    $dias++;
}
$dias--;
echo "Faltam $dias para o pagamento!<br>";
?>

http://php.net/manual/pt_BR/function.strtotime.php

Marcelo Wergles.


ivo nascimento

unread,
Jun 12, 2010, 8:15:32 PM6/12/10
to list...@googlegroups.com
datetime
http://www.php.net/manual/en/class.datetime.php
--
Ivo Nascimento - Iann
-------------------------------------
|   twitter: ivonascimento .     |
|   http://ianntech.com.br.      |
|   ZCE ID 227463685            |
-------------------------------------
Reply all
Reply to author
Forward
0 new messages