Ir para conteúdo

Arquivado

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

leonardonobre

Função para somar um dia a uma data.

Recommended Posts

Bom dia todos!

Abaixo uma função que soma um dia a uma data.

 

Espero ter ajudado,

abraços,

Léo

 

// Autor da lógica de data: hunternh 
// Documentador: Leonardo Nobre
// Data: 31/01/2008 - 11:45h

// txtData - é a data inicial.
// DiasAdd - É quantos dias você quer adicionar a txtData.
function SomarData(txtData,DiasAdd) 
{
		// Tratamento das Variaveis.
		// var txtData = "01/01/2007"; //poder ser qualquer outra
		// var DiasAdd = 10 // Aqui vem quantos dias você quer adicionar a data
		var d = new Date();
			// Aqui eu "mudo" a configuração de datas.
			// Crio um obj Date e pego o campo txtData e 
			// "recorto" ela com o split("/") e depois dou um
			// reverse() para deixar ela em padrão americanos YYYY/MM/DD
			// e logo em seguida eu coloco as barras "/" com o join("/")
			// depois, em milisegundos, eu multiplico um dia (86400000 milisegundos)
			// pelo número de dias que quero somar a txtData.
			d.setTime(Date.parse(txtData.split("/").reverse().join("/"))+(86400000*(DiasAdd)))
		
		// Crio a var da DataFinal			
		var DataFinal;

		// Aqui comparo o dia no objeto d.getDate() e vejo se é menor que dia 10.			
		if(d.getDate() < 10)
		{
			// Se o dia for menor que 10 eu coloca o zero no inicio
			// e depois transformo em string com o toString()
			// para o zero ser reconhecido como uma string e não
			// como um número.
			DataFinal = "0"+d.getDate().toString();
		}
		else
		{	
			// Aqui a mesma coisa, porém se a data for maior do que 10
			// não tenho necessidade de colocar um zero na frente.
			DataFinal = d.getDate().toString();	
		}
		
		// Aqui, já com a soma do mês, vejo se é menor do que 10
		// se for coloco o zero ou não.
		if((d.getMonth()+1) < 10){
			DataFinal += "0"+(d.getMonth()+1).toString();
		}
		else
		{
			DataFinal += (d.getMonth()+1).toString())+"/"+d.getFullYear().toString();
		}
		
}

Agradecimentos ao hunternh!

31/01/2008

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

Fui utilizar a função e ela inicialmente apresentou um erro de parenteses.

Assim que corrigi, estavam faltando algumas "barras" na data final, e também faltava concatenar o ano quando o mes era menor que dez.

 

Abaixo o código que utilizei e que deu certo aqui para mim http://forum.imasters.com.br/public/style_emoticons/default/grin.gif

 

 

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

function SomarData(txtData,DiasAdd) 
{
alert('oi')
        // Tratamento das Variaveis.
        // var txtData = "01/01/2007"; //poder ser qualquer outra
        // var DiasAdd = 10 // Aqui vem quantos dias você quer adicionar a data
        var d = new Date();
            // Aqui eu "mudo" a configuração de datas.
            // Crio um obj Date e pego o campo txtData e 
            // "recorto" ela com o split("/") e depois dou um
            // reverse() para deixar ela em padrão americanos YYYY/MM/DD
            // e logo em seguida eu coloco as barras "/" com o join("/")
            // depois, em milisegundos, eu multiplico um dia (86400000 milisegundos)
            // pelo número de dias que quero somar a txtData.
         d.setTime(Date.parse(txtData.split("/").reverse().join("/"))+(86400000*(DiasAdd)))
        
        // Crio a var da DataFinal            
        var DataFinal;

        // Aqui comparo o dia no objeto d.getDate() e vejo se é menor que dia 10.            
        if(d.getDate() < 10)
        {
            // Se o dia for menor que 10 eu coloca o zero no inicio
            // e depois transformo em string com o toString()
            // para o zero ser reconhecido como uma string e não
            // como um número.
            DataFinal = "0"+d.getDate().toString();
        }
        else
        {    
            // Aqui a mesma coisa, porém se a data for maior do que 10
            // não tenho necessidade de colocar um zero na frente.
            DataFinal = d.getDate().toString();    
        }
        
        // Aqui, já com a soma do mês, vejo se é menor do que 10
        // se for coloco o zero ou não.
        if((d.getMonth()+1) < 10){
            DataFinal += "/0"+(d.getMonth()+1).toString()+"/"+d.getFullYear().toString();
        }
        else
        {
            DataFinal += "/"+((d.getMonth()+1).toString())+"/"+d.getFullYear().toString();
        }
        alert(DataFinal)
}

 

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

 

Mas a lógica ta perfeita.

http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

 

abraços,

Felipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara estava utilizando essa lógica ai... e tava tudo ok.... mas hoje reparei que tem algo errado.

 

Eu to somando 30 dias numa data e ele ta pegando a data de hoje, ta muito estranho.

 

var dia = hoje.getDate();
var mes = hoje.getMonth();
var ano = hoje.getFullYear();
var texData = dia + "/" + mes + "/" + ano;
var dias = 30;
var hoje = new Date();
hoje.setTime(Date.parse(texData.split("/").reverse().join("/"))+(86400000*(dias)))

Essa variavel hoje fica dando a data de hoje, sendo que estou somando os dias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem uma forma bem mais simples para isso

 

var depois = new Date();
depois.setDate(depois.getDate() + 30);

var hoje = new Date();
hoje.setDate(hoje.getDate());

alert("Data de hoje " + hoje.getDate() + "/" + (hoje.getMonth() + 1) + "/" + hoje.getFullYear());
alert("Daqui 30 dias " + depois.getDate() + "/" + (depois.getMonth() + 1) + "/" + depois.getFullYear());

=D

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.