Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eduardo.dreyer

[Resolvido] Sequencia de Data

Recommended Posts

olá, gostaria de saber como pegar uma sequencia de datas, tipo pego como parametro a data inicial e final,

 

exemplo, passo 12/02/2012 e 16/02/2012

 

queria pegar as datas 12/02/2012, 13/02/2012, 14/02/2012, 15/02/2012 e 16/02/2012

 

? algum tem uma ideia ?

Compartilhar este post


Link para o post
Compartilhar em outros sites
$inicial = new DateTime('2012-02-10');
$final = new DateTime('2012-02-13');

$diferenca = $inicial->diff($final);

$diferenca_dias = $diferenca->format('%a');

for ($i = 0; $i < $a; $i += 1) {
   print_r($inicial->format('d-m-Y'));
   $inicial->add(new DateInterval('P1D'));
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

$inicial = new DateTime('2012-02-10');
$final = new DateTime('2012-02-13');

$diferenca = $inicial->diff($final);

$diferenca_dias = $diferenca->format('%a');

for ($i = 0; $i < $a; $i += 1) {
   print_r($inicial->format('d-m-Y'));
   $inicial->add(new DateInterval('P1D'));
}

 

 

deu um erro na linha

$diferenca = $inicial->diff($final);

 

Fatal error: Call to undefined method DateTime::diff() in /home/connect/public_html/portojofre/cadastro.php on line 40

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente a sua versão do PHP é inferior a 5.3, porque o método diff foi implementado na 5.3.

 

Se a sua versão não for 5.3, atualize-a e tudo vai funcionar normalmente. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Provavelmente a sua versão do PHP é inferior a 5.3, porque o método diff foi implementado na 5.3.

 

Se a sua versão não for 5.3, atualize-a e tudo vai funcionar normalmente. :thumbsup:

 

mais o site esta num servidor, como vou atualizar ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro você precisa ter certeza de que sua versão não é a 5.3. Se não for, solicite ao seu provedor de hospedagem.

 

Mas antes tente fazer isso:

 

<?php

$inicial = new DateTime( '2012-02-10' ) ;
$final = new DateTime( '2012-02-13' ) ;
$diferenca = round( abs( $final->format( 'U' ) - $inicial->format( 'U' ) ) / ( 60 * 60 * 24 ) ) ;

$diferenca_dias = $diferenca->format( '%a' ) ;

for( $i = 0 ; $i < $a ; $i += 1 ) {
	print_r( $inicial->format( 'd-m-Y' ) ) ;
	$inicial->add( new DateInterval( 'P1D' ) ) ;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha oque eu consequi:

 

function date_diff($date1, $date2) {
   $current = $date1;
   $datetime2 = date_create($date2);
   $count = 0;
   while(date_create($current) < $datetime2){
       $current = gmdate("Y-m-d", strtotime("+1 day", strtotime($current)));
       $count++;
   }
   return $count;
}

$num1 = (date_diff($NovaDataIni, $NovaDataFin)."");

 

mostra quantos dias tem de diferenca,

 

agora como faço para pegar a NovaDataIni e inserir mais a quantidade de dias de diferenca em sequencia ??

 

tipo se a dada inicial for 2012-02-15 e a diferenca for 5 quero que insira no banco de dados, na coluna data os valor assim

 

codigo, usuario, data

1, 1, 2012-02-15

2, 1, 2012-02-16

3, 1, 2012-02-17

4, 1, 2012-02-18

5, 1, 2012-02-19

 

codigo é a chave.

 

direpente um FOR

 

for($i = 0; $i < $num; $i++){

 

codigo para pegar a data e somar com mais 1... e inseir no banco..

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

opa, consequi.

 


$DataInicial = $_GET['entrada'];
$Data = explode('-',$DataInicial);
$NovaDataIni = $Data[2]."-".$Data[1]."-".$Data[0];

$DataFinal = $_GET['saida'];
$Data1 = explode('-',$DataFinal);
$NovaDataFin = $Data1[2]."-".$Data1[1]."-".$Data1[0];

function date_diff($date1, $date2) {
   $current = $date1;
   $datetime2 = date_create($date2);
   $count = 0;
   while(date_create($current) < $datetime2){
       $current = gmdate("Y-m-d", strtotime("+1 day", strtotime($current)));
       $count++;
   }
   return $count;
}

$num1 = (date_diff($NovaDataIni, $NovaDataFin)."");
$num  = $num1+1;

	$sql .= "".$NovaDataIni." ";
for($i = 1; $i < $num; $i++){

	$sql .= "<br>";
	$sql .=  $current = gmdate("Y-m-d", strtotime("+".$i." day", strtotime($NovaDataIni)));
}

echo $sql;

 

se alguem precisar .... ta ai..

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.