Jump to content


Photo

[Resolvido] Somar Datas


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

#1 Chaparro

Chaparro

    Turista

  • Usuários
  • 34 posts
  • Sexo:Masculino

Posted 02/08/2010, 10:15

Bom dia pessoal... Estou com uma seguinte dúvida...

Preciso somar os dias de uma data... por exemplo...

Tenho uma data 02/08/2010 e preciso soma-la + 6 e guardar os valores dos dias......

Preciso que seje printado 03,04,05,06,07,08

Como faço isso?

Obrigado

#2 Alan Martini

Alan Martini

    Normal

  • Usuários
  • 75 posts
  • Sexo:Masculino
  • Localidade:Campo Bom, RS
  • Interesses:De tudo um pouco

Posted 02/08/2010, 11:01

Bom dia Chaparro,

Você pode fazer o seguinte:
<?php 
// separa a data pela / em um array
$data = explode("/", 02/08/2010);
$i    = 1;
while ($i < 7) :
   //pega o valor referente ao dia e soma com o $i do looping
   $array[] = $data[0]+$i;
   $i++;
endwhile;
//exibe os dados no array
print_r ($array);
?>

Acho que é isso.
Abraço
Este post lhe ajudou/foi útil? Retribua(+)
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini

#3 Chaparro

Chaparro

    Turista

  • Usuários
  • 34 posts
  • Sexo:Masculino

Posted 02/08/2010, 13:18

Bom dia Chaparro,

Você pode fazer o seguinte:

<?php 
// separa a data pela / em um array
$data = explode("/", 02/08/2010);
$i    = 1;
while ($i < 7) :
   //pega o valor referente ao dia e soma com o $i do looping
   $array[] = $data[0]+$i;
   $i++;
endwhile;
//exibe os dados no array
print_r ($array);
?>

Acho que é isso.
Abraço



Até ai beleza... Ele printa assim Array ( [0] => 3 [1] => 4 [2] => 5 [3] => 6 [4] => 7 [5] => 8 )

Teria como printar 030405060708?? pode ser tudo junto sem separação?

#4 Alan Martini

Alan Martini

    Normal

  • Usuários
  • 75 posts
  • Sexo:Masculino
  • Localidade:Campo Bom, RS
  • Interesses:De tudo um pouco

Posted 02/08/2010, 13:34

Olá,

Pode fazer desta meneira:
<?php 
// separa a data pela / em um array
$data = explode("/", 02/08/2010);
$i    = 1;
while ($i < 7) :
   //pega o valor referente ao dia e soma com o $i do looping
   $tudoJunto .= "0".$data[0]+$i; // utilizando .= é sempre adicionado o valor para variável.
   $i++;
endwhile;
//exibe os dados no array
echo $tudoJunto;
?>

Vê se é isso mesmo, abraço.
Este post lhe ajudou/foi útil? Retribua(+)
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini

#5 Chaparro

Chaparro

    Turista

  • Usuários
  • 34 posts
  • Sexo:Masculino

Posted 02/08/2010, 14:29

Eu fiz mais ou menos, acontece que do jeito que mandou dava divizion by zero... mais ok... Acontece que agora ele está printando 345678 e não 030405060708, fiz uma função escrevendo se o lang <= 1 printava o "0" à esquerda, mais ele printa todos os zeros, assim 000000345678...


<?php 
// separa a data pela / em um array
$data = explode('/', date("d/m/Y"));
$i    = 1;
while ($i < 7) 
{   
	//pega o valor referente ao dia e soma com o $i do looping   
	$tudoJunto .= "0".$data[0]+$i; // utilizando .= é sempre adicionado o valor para variável.   
	$i++;
}
//exibe os dados no array
echo $tudoJunto;
?>



#6 Alan Martini

Alan Martini

    Normal

  • Usuários
  • 75 posts
  • Sexo:Masculino
  • Localidade:Campo Bom, RS
  • Interesses:De tudo um pouco

Posted 02/08/2010, 14:47

Não pode deixar o 0 como string, tem que adicionar antes.

<?php
// separa a data pela / em um array
$data = explode('/', date("d/m/Y"));
$i    = 1;
while ($i < 7){
        //pega o valor referente ao dia e soma com o $i do looping
        $tudoJunto .= 0;
        $tudoJunto .= $data[0]+$i; // utilizando .= é sempre adicionado o valor para variável.
        $i++;
}
//exibe os dados no array
echo $tudoJunto;
?>

aqui funcinou agora ^_^
Este post lhe ajudou/foi útil? Retribua(+)
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini

#7 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 02/08/2010, 15:09

Esse código tem uns problemas. Primeiro vocês estão assumindo que a soma nunca vai passar de 09, porque se isso acontecer fica 010 e aí foge do padrão. Outra coisa é não considerar o que acontece se a data estiver perto do fim do mês e ele virar. Vai sair 32, 33, 34... Pra funcionar em qualquer situação, teria que ser uma coisa como:

$data = strtotime('2010-08-02');
$somar = 6;
$s = '';

for($i=1;$i<=$somar;$i++){
$s .= date('d', $data + ($i*60*60*24));
}

echo $s;


#8 Chaparro

Chaparro

    Turista

  • Usuários
  • 34 posts
  • Sexo:Masculino

Posted 02/08/2010, 16:33

Ola Amigo,

Muito obrigado pela ajuda...

Agora deu certo....

Mais uma vez obrigado

Esse código tem uns problemas. Primeiro vocês estão assumindo que a soma nunca vai passar de 09, porque se isso acontecer fica 010 e aí foge do padrão. Outra coisa é não considerar o que acontece se a data estiver perto do fim do mês e ele virar. Vai sair 32, 33, 34... Pra funcionar em qualquer situação, teria que ser uma coisa como:

$data = strtotime('2010-08-02');
$somar = 6;
$s = '';

for($i=1;$i<=$somar;$i++){
$s .= date('d', $data + ($i*60*60*24));
}

echo $s;



Cara muito bom seu codigo... Muito obrigado... Mas se não fosse abusar... Teria como você me dizer por exemplo como eu pulo as segundas-feiras?? Dessa maneira que me explicou esta printando todos os dias... Estou trabalhando com anuncio de jornal... E de segunda feira não existe classificados... então um exemplo o anuncio é feito na quinta ( dia 05 ), então o anuncio saíra 060708101112 (percebeu que eu pulei o 09 que é segunda feira e assim sussessivamente...

Obrigado

#9 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 02/08/2010, 16:43

Vê se assim funciona:

$data = strtotime('2010-08-02');
$somar = 6;
$s = '';

for($i=1;$i<=$somar;){
$data += 60*60*24;
if(date('w', $data) != 1){
$s .= date('d', $data);
$i++;
}
}

echo $s;


#10 Chaparro

Chaparro

    Turista

  • Usuários
  • 34 posts
  • Sexo:Masculino

Posted 02/08/2010, 17:28

Vê se assim funciona:

$data = strtotime('2010-08-02');
$somar = 6;
$s = '';

for($i=1;$i<=$somar;){
$data += 60*60*24;
if(date('w', $data) != 1){
$s .= date('d', $data);
$i++;
}
}

echo $s;


Funcionou sim... Muito Obrigado




0 user(s) are reading this topic

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

IPB Skin By Virteq