Jump to content


Photo

Datediff()


  • Faça o login para participar
21 replies to this topic

#1 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 17/06/2005, 15:15

Sintaxe: dateDiff( Str sDataInicial , Str sDataFinal )
Retorno: Inteiro
Descrição: Retorna o número de dias entre a data inicial e a data final
Bibliotecas: Nenhuma
Limitações: PHP 4.0+

Função:
<?php
function dateDiff($sDataInicial, $sDataFinal)
{
  $sDataI = explode("-", $sDataInicial);
  $sDataF = explode("-", $sDataFinal);

  $nDataInicial = mktime(0, 0, 0, $sDataI[1], $sDataI[0], $sDataI[2]);
  $nDataFinal = mktime(0, 0, 0, $sDataF[1], $sDataF[0], $sDataF[2]);

  return ($nDataInicial > $nDataFinal) ?
    floor(($nDataInicial - $nDataFinal)/86400) : floor(($nDataFinal - $nDataInicial)/86400);
}
?>

Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#2 redstyle

redstyle

    Expert

  • Usuários
  • 540 posts
  • Sexo:Masculino

Posted 18/06/2005, 10:18

Fala Justice, blz?
Só tira uma dúvida sobre sua função.

Usei ela assim

echo datediff("10-10-2004", "10-10-2005");

E me retornou 372.

As datas são no formato brasileiro mesmo?
Tipo 372 veio errado né?

[]'s

Conheça meu blog para Aprender Laravel (Framework PHP)


#3 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 18/06/2005, 21:28

Erro bobo corrigido.
No lugar de 86400 coloquei 84600. (Paulo Freitas fez a aritmética =P)
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29

#4 mi7chael

mi7chael

    12 Horas

  • Usuários
  • 266 posts
  • Sexo:Masculino

Posted 10/02/2006, 14:32

Olá

Eu tava precisando justamente disso, hehe.

Só que eu encontrei um probleminha... os anos bissextos...

Olha só:

<?
function dateDiff($sDataInicial, $sDataFinal)
{
 $sDataI = explode("-", $sDataInicial);
 $sDataF = explode("-", $sDataFinal);

 $nDataInicial = mktime(0, 0, 0, $sDataI[1], $sDataI[0], $sDataI[2]);
 $nDataFinal = mktime(0, 0, 0, $sDataF[1], $sDataF[0], $sDataF[2]);

 return ($nDataInicial > $nDataFinal) ?
   floor(($nDataInicial - $nDataFinal)/86400) : floor(($nDataFinal - $nDataInicial)/86400);
}

//daqui pracima eu peguei aqui no post, pra baixo foi eu que fiz
?>

<?
$data1 = "11-11-1983";
$data2 = date("d-m-Y");
$resultado = datediff("$data1", "$data2");
$anos = $resultado/365;
$idade = explode("." , $anos);
echo $idade[0];
?>

Só que aí ele vai mostrar a idade, mas vai contar todos os anos com 365 dias. O que daria uma diferença, tipo, aí nesse exemplo, o meu aniversário cairia no dia 05/11/06, e não em 11/11/06. Como eu poderia arrumar isso ???

#5 lucasphp

lucasphp

    Turista

  • Usuários
  • 51 posts
  • Sexo:Não informado

Posted 11/02/2006, 12:41

Ao invés de dividir por 365, divide por 365.25 e arredonda

Edição feita por: lucasphp, 11/02/2006, 12:44.


#6 mi7chael

mi7chael

    12 Horas

  • Usuários
  • 266 posts
  • Sexo:Masculino

Posted 14/02/2006, 14:29

É... deu certo, hehe. Agora ele calcula certinho. Valew man, muito obrigado.

#7 Chinello Cybernético

Chinello Cybernético

    Simplesmente "Chinello"

  • Usuários
  • 1892 posts
  • Sexo:Masculino
  • Localidade:Canoas - RS

Posted 16/02/2006, 14:05

Só pra constar, há uma década ( :assobio: ) atrás, rolou uma discussão onde fizemos essa função..

Ela dá suporte aos tipos de dados que possam ser obtigos como diferença entre essas datas (dias, meses, anos, etc.)

Talvez com base nela, possa ser implementada nessa.. Ou sei lá.. hehehe (y)

-------------------------------------------------

Oopssss.. Faltou o tópico.. tá ae:

http://forum.wmonlin...showtopic=49078

Edição feita por: Chinello Cybernético, 16/02/2006, 14:05.

Diego Sampaio - kroW - PHP Framework > http://chinelloweb.net/
chinello at gmail dot com

System > Athlon 64 3200+ Mobile | Kubuntu 7.04 Fesity Fawn AMD64 | Kernel 2.6.20-16
Coding @ KDE 3.5.7 | PHP 5.2.1 | Apache 2.2.3 | MySQL 5.0.38

#8 kartesus

kartesus

    ich bin der Geist der stets verneint

  • Usuários
  • 210 posts
  • Sexo:Não informado
  • Localidade:Rio Grande do Sul
  • Interesses:PHP e sexo

Posted 17/02/2006, 12:33

hahahahaha ... muito legal reler a discussão ... até que tinha ficado descente a função!!
Valeu Chinello, nem lembrava mais dela! hahahahaha
Ainda com dúvidas? Poste-as aki

#9 cocacola

cocacola

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Não informado

Posted 23/05/2006, 18:14

esse funcao serve pra data normal do mysql? aquela com o ano na frente.

preciso de uma funcao dessa usando data normal do mysql, alguem me ajuda ae.

#10 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 23/05/2006, 18:41

esse funcao serve pra data normal do mysql? aquela com o ano na frente.

preciso de uma funcao dessa usando data normal do mysql, alguem me ajuda ae.


Você pode obter a diferença direto na query: http://forum.wmonlin...ndpost&p=724504



Flws...

;)Até mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#11 danceman

danceman

    Mario Safado ¬¬

  • Usuários
  • 228 posts
  • Sexo:Não informado

Posted 27/07/2006, 10:39

o meu tbm ta mostrando 372 =/

veja
function dateDiff($sDataInicial, $sDataFinal){ 
$sDataI = explode("-", $sDataInicial); 
$sDataF = explode("-", $sDataFinal); 
$nDataInicial = mktime(0, 0, 0, $sDataI[1], $sDataI[0], $sDataI[2]); 
$nDataFinal = mktime(0, 0, 0, $sDataF[1], $sDataF[0], $sDataF[2]); 
return ($nDataInicial > $nDataFinal) ?   floor(($nDataInicial - $nDataFinal)/84600) : floor(($nDataFinal - $nDataInicial)/84600);
}


		  <? 
		  $data1 = $rs['datacadastro'];
		  $data2 = date("Y-m-d");
	 	  $resultado = datediff("$data1", "$data2");
		  $tempo = $resultado;
		  echo $tempo; 
		  ?>

Posted Image

#12 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 20/09/2006, 21:33

O meu deu certo.

<?
function dateDiff($sDataInicial, $sDataFinal)
{
$sDataI = explode("-", $sDataInicial);
$sDataF = explode("-", $sDataFinal);

$nDataInicial = mktime(0, 0, 0, $sDataI[1], $sDataI[0], $sDataI[2]);
$nDataFinal = mktime(0, 0, 0, $sDataF[1], $sDataF[0], $sDataF[2]);

return ($nDataInicial > $nDataFinal) ?
  floor(($nDataInicial - $nDataFinal)/86400) : floor(($nDataFinal - $nDataInicial)/86400);
}



$data1 = "20-11-1990";
$data2 = date("d-m-Y");
$resultado = datediff("$data1", "$data2");
$div = bcdiv($resultado, 365.65, 0);  //$resultado dividido por 365.65, "0" quer dizer o número de casas depois da vírgula.
echo ($div);
?>

Use ceil() (Arredondar para mais) ou floor() (Arredondar para menos).

Até mais ^_^

Edição feita por: _Dudu_1533, 20/09/2006, 21:41.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#13 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 20/09/2017, 17:11

Cytotec Udi cialis Prescriptiondrugswithoutprescription Cialis Testosterona Inconvenientes Propecia Hydrochlorothiazide Hzt Low Price cialis buy online Dapoxetine Hydrochloride
Lasix Turkey cialis Should Keflex Be Taken With Milk
Efectos Cialis Alcohol Amoxil Uses
Canine Cephalexin Dosage <a href=http://cialtobuy.com>generic cialis</a> Shop Provera

#14 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 14/10/2017, 08:12

Can Amoxicillin Be Taken When Expired Cialis Billig Rezept Abortion Pill Online viagra online pharmacy Viagra 100mg Canada Pharmacy Buy Generic Effexor Online
Tadalis Sx Achat En France buy levitra professional online Comprar Kamagra Contrareembolso
Levaquin Where To Purchase generic levitra 20mg Comprar Cialis Original Online Express Ship Non Prescription Viagara

#15 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 14/10/2017, 15:06

Penicillin And Cephalexin Together Cialis For Daily Use Cost levitra prices 20 gm free delivery Cialis 2.5 Mg Amoxicilina On Sale
Amoxicillin Trihydrate 250 Dosage cialis online Comprar Cialis Farmacia Espana
Buying Levitra Online Without Prescription generic viagra Achat Tadalafil Canada
Stendra (Avanafil) Tablets viagra Viagra Packungsbeilage




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq