Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) ajuda data


nipp

Pergunta

11 respostass a esta questão

Posts Recomendados

  • 0
Link para o comentário
Compartilhar em outros sites

  • 0

então eu fiz ai tetando eguir esse esquema mais não deuu não da erro

é so aparece um numro

da quantidade de dias qeu falata

e o que eu prescizo é

e tipo

hj dia 13/11/2008 20:30:00 hora evento tipo 14/11/2008 22:30:00

ai quero que mostre a difeença pra iniciar a contagem

que seria

1 dia 1 hora 59 minutos 59 segundo

Link para o comentário
Compartilhar em outros sites

  • 0

Olá!

Tu leste o manual?

Olhe bem, a função mktime retorna um inteiro com os segundos desde o timestamp do começo da contagem do UNIX. É só tu criar um de agora, e um de quando você quer. Faz a diferença dos dois e converte pra data novamente. O resultado é a diferença em SEGUNDOS.

Espero ter ajudado!

:closedeyes:

Link para o comentário
Compartilhar em outros sites

  • 0

mais eu testei

mais so fica aparecendo

eu to usando essa unção

function GetDateDifference($StartDateString=NULL, $EndDateString=NULL) {

$ReturnArray = array();

$SDSplit = explode('/',$StartDateString);

$StartDate = mktime(0,0,0,$SDSplit[0],$SDSplit[1],$SDSplit[2]);

$EDSplit = explode('/',$EndDateString);

$EndDate = mktime(0,0,0,$EDSplit[0],$EDSplit[1],$EDSplit[2]);

$DateDifference = $EndDate-$StartDate;

$ReturnArray['YearsSince'] = $DateDifference/60/60/24/365;

$ReturnArray['MonthsSince'] = $DateDifference/60/60/24/365*12;

$ReturnArray['DaysSince'] = $DateDifference/60/60/24;

$ReturnArray['HoursSince'] = $DateDifference/60/60;

$ReturnArray['MinutesSince'] = $DateDifference/60;

$ReturnArray['SecondsSince'] = $DateDifference;

$y1 = date("Y", $StartDate);

$m1 = date("m", $StartDate);

$d1 = date("d", $StartDate);

$y2 = date("Y", $EndDate);

$m2 = date("m", $EndDate);

$d2 = date("d", $EndDate);

$diff = '';

$diff2 = '';

if (($EndDate - $StartDate)<=0) {

// Start date is before or equal to end date!

$diff = "0 days";

$diff2 = "Days: 0";

} else {

$y = $y2 - $y1;

$m = $m2 - $m1;

$d = $d2 - $d1;

$daysInMonth = date("t",$StartDate);

if ($d<0) {$m--;$d=$daysInMonth+$d;}

if ($m<0) {$y--;$m=12+$m;}

$daysInMonth = date("t",$m2);

// Nicestring ("1 year, 1 month, and 5 days")

if ($y>0) $diff .= $y==1 ? "1 year" : "$y years";

if ($y>0 && $m>0) $diff .= ", ";

if ($m>0) $diff .= $m==1? "1 month" : "$m months";

if (($m>0||$y>0) && $d>0) $diff .= ", and ";

if ($d>0) $diff .= $d==1 ? "1 day" : "$d days";

// Nicestring 2 ("Years: 1, Months: 1, Days: 1")

if ($y>0) $diff2 .= $y==1 ? "Years: 1" : "Years: $y";

if ($y>0 && $m>0) $diff2 .= ", ";

if ($m>0) $diff2 .= $m==1? "Months: 1" : "Months: $m";

if (($m>0||$y>0) && $d>0) $diff2 .= ", ";

if ($d>0) $diff2 .= $d==1 ? "Days: 1" : "Days: $d";

}

$ReturnArray['NiceString'] = $diff;

$ReturnArray['NiceString2'] = $diff2;

return $ReturnArray;

}

}

so que eu nãos ei como eu faço pra usar a função para fazer o calculo da data um pra data 2

foi mal não ter postado o ultimo post

Editado por nipp
Link para o comentário
Compartilhar em outros sites

  • 0

Amigão, a conta eu já te passei:

<?php
$data1 = strtotime('13-11-2008 20:30:00');
$data2 = strtotime('14-11-2008 22:30:00');

$dif = $data2-$data1;
?>

É só você pegar o $dif e passar para a função, a própria função tem exemplos de uso, abaixo vou te passar "prontinho" espero que você consiga copiar/colar com êxito:

<?php
$data1 = strtotime('13-11-2008 20:30:00');
$data2 = strtotime('14-12-2008 22:31:19');

$dif = $data2-$data1;

$array = converte_segundos($dif, 'd');

foreach($array as $ind=>$val){
$$ind = $val;
}

echo "$dias - $horas - $minutos - $segundos";

function converte_segundos($total_segundos, $inicio = 'Y') {
/**
* @autor: Carlos H. Reche
* @data: 11/08/2004
*/

/* Devido à variação de dias entre os meses (pode ter 28, 29, 30 ou 31), o cálculo com diferenças entre timestamps nunca poderá ser exato, a não ser que o cálculo comece pelo número de dias (ou horas, minutos, segundos). Para minimizar ao máximo essa diferença, eu criei esta constante para utilizar durante o cálculo:
*/
define('dias_por_mes', ((((365*3)+366)/4)/12) );

$comecou = false;

if ($inicio == 'Y')
{
$array['anos'] = floor( $total_segundos / (60*60*24* dias_por_mes *12) );
$total_segundos = ($total_segundos % (60*60*24* dias_por_mes *12));
$comecou = true;
}
if (($inicio == 'm') || ($comecou == true))
{
$array['meses'] = floor( $total_segundos / (60*60*24* dias_por_mes ) );
$total_segundos = ($total_segundos % (60*60*24* dias_por_mes ));
$comecou = true;
}
if (($inicio == 'd') || ($comecou == true))
{
$array['dias'] = floor( $total_segundos / (60*60*24) );
$total_segundos = ($total_segundos % (60*60*24));
$comecou = true;
}
if (($inicio == 'H') || ($comecou == true))
{
$array['horas'] = floor( $total_segundos / (60*60) );
$total_segundos = ($total_segundos % (60*60));
$comecou = true;
}
if (($inicio == 'i') || ($comecou == true))
{
$array['minutos'] = floor($total_segundos / 60);
$total_segundos = ($total_segundos % 60);
$comecou = true;
}
$array['segundos'] = $total_segundos;

return $array;
}
?>[/codebox]

Pronto tá ai, só uma dica, sempre válida, sempre que alguém te disse pra tentar, não é tentar uma vez e pensar "ai meu Deus, não vou conseguir" tenta uma meia hora, e demonstra pra pessoa que você tentou, pois eu particularmente duvido que você tenha sequer lido os exemplos de uso da função, de qualquer maneira, seu problema agora está resolvido.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...