GARANTIR DESCONTO

Fórum Somar 10 dias a uma data. #565299

09/04/2009

0

Tenho o seguinte String: ?01/09/2004? Desejo somar 10 dias nesta data. Quero saber se tem como acrescenter 10 dias sem ter que desmembrar a data. Eu queria fazer o seguinte : resultado = 01/09/2004 + 10 resultado = 11/09/2004 Mas não sei como faze-lo e também não estou encontrando exemplos no fórum. Por gentileza, você pode me passar um exemplo? Muito obrigado por sua atenção!
Sandrod

Sandrod

Responder

Post mais votado

09/04/2009

Aí Paulo, a maneira como você ensinou é muito legal e bem mais simples. Eu fiz algumas alterações para melhorar o entendimento para quem estiver com dúvidas como eu estava.
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

Date a = new Date("2004/09/01");		
a.setDate(a.getDate() + 10);		

String formato = "dd/MM/yyyy";
SimpleDateFormat dataFormatada = new SimpleDateFormat(formato);	
System.out.println("Daqui há dez dias: " + dataFormatada.format(a));
Muito obrigado Paulo!

Sandrod

Sandrod
Responder

Gostei + 1

Mais Posts

09/04/2009

Paulohbmetal

Bom, vc pode fazer assim:
minhaData.setDate(minhaData.getDate() + 10);
A Paz!!
Responder

Gostei + 0

09/04/2009

Sandrod

Value paulohbmetal, obrigado por sua dica! Achei um exemplo legal aqui no fórum, procurem por (subtrair data) Eu peguei o exemplo e somei 60 dias ao dia 02/09/2004 e tive o dia 02/12/2004 como resultado, ou seja, funcionou. Até mais galera, valeu!
public static void main (String args[])
	{	
 	 SimpleDateFormat sd = new SimpleDateFormat("dd/MM/yyyy"); 
 	 
 	 Calendar c = new GregorianCalendar(2004, 9, 2); 
	 
 	 System.out.println("Data: " + sd.format(c.getTime())); 
	 
	 c.add(Calendar.DAY_OF_MONTH, 60);
	 System.out.println("Sessenta dias depois: " + sd.format(c.getTime()));
	 
 	 c.add(Calendar.DAY_OF_MONTH, -1); 
 	 System.out.println("Um dia antes: " + sd.format(c.getTime())); 
	 
 	 c.add(Calendar.MONTH, -1); 
 	 System.out.println("Um mês antes: " + sd.format(c.getTime())); 
	 
 	 c = new GregorianCalendar(2003, Calendar.MARCH, 3); 
 	 System.out.println("Data: " + sd.format(c.getTime())); 
	 
 	 c.add(Calendar.DAY_OF_MONTH, -1); 
 	 System.out.println("Um dia antes: " + sd.format(c.getTime())); 
	 
 	 c.add(Calendar.MONTH, -1); 
 	 System.out.println("Um mês antes: " + sd.format(c.getTime()));
 	}
Responder

Gostei + 0

09/04/2009

Sandrod

Galerinha estou enviando está classe como exemplo, é só pegar e rodar, ok! Até mais!
import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class Teste
{

 public static void main(String[] args)throws ParseException 
 {
 Teste teste = new Teste();
		
		System.out.println(teste.somaData("2004-07-01", 10));
	 
 }

	public String converteDataBrasil(String data)
	{	
		String dataConvertida = "";		
		try
		{
			 SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy/MM/dd");
			 SimpleDateFormat ddMMyyyy = new SimpleDateFormat("dd/MM/yyyy");
			 dataConvertida = ddMMyyyy.format(yyyyMMdd.parse(verificaMascaraData(data)));					 
		}
		catch(Exception e)
		{}
		
		return dataConvertida;		
	}

	/**
	*	Se a data vier separada por "-"
	* Será trocado por "/"
	*/
	public String verificaMascaraData(String data)
	{
		for (int i = 0; i < data.length(); i++)
		{
			char c = data.charAt(i);
			if (c == '-')
				data = data.replace ('-', '/');
		}			
		return data;		
	}

	public String somaData(String data, int somaDias)
	{
				
		Date dt = new Date(verificaMascaraData(data));
		String formato = "dd/MM/yyyy";
		dt.setDate(dt.getDate() + somaDias);		

		SimpleDateFormat dataFormatada = new SimpleDateFormat(formato);		
		return dataFormatada.format(dt);
	}


 public static int intervaloDias (Date d1, Date d2) 
 { 
 int result = (int)((d1.getTime() - d2.getTime()) / 86400000L); 
 return result<0?result*-1:result; 
	 } 
 
}
Responder

Gostei + 0

09/04/2009

Paulohbmetal

[quote="sandrod"]Aí Paulo, a maneira como você ensinou é muito legal e bem mais simples. Eu fiz algumas alterações para melhorar o entendimento para quem estiver com dúvidas como eu estava.
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

Date a = new Date("2004/09/01");		
a.setDate(a.getDate() + 10);		

String formato = "dd/MM/yyyy";
SimpleDateFormat dataFormatada = new SimpleDateFormat(formato);	
System.out.println("Daqui há dez dias: " + dataFormatada.format(a));
Muito obrigado Paulo!
É isso aí cara, é um prazer estar contribuindo com o JavaFree e todas as comunidades que participo.E quando preciso também sempre posto minhas dúvidas. A Paz!!
Responder

Gostei + 0

09/04/2009

Sandrod

Galera a classe que eu postei acima funciona legal. Nas IDEs Realj e Eclipse, consigo compilar, entretanto: AO COMPILAR NO PROMPT DOS e na IDE Realj, aparece isso, mas o programa roda e apresenta o resultado. c:\tomcat 4.0\webapps\ccpr\web-inf\classes\servlets\ccpr>javac teste.java Note: teste.java uses or overrides a deprecated API. Note: Recompile with -deprecation for details. NO ECLIPSE NÃO APARECE NENHUMA MENSAGEM, a classe compila e pronto. Então fui compilar no prompt DOS atribuindo -deprecation e foi apresentado isso como erro: c:\tomcat 4.0\webapps\ccpr\web-inf\classes\servlets\ccpr>javac teste.java -deprecation teste.java:19: warning: Date(java.lang.String) in java.util.Date has been deprecated Date dt = new Date(verificaMascaraData(data)); ^ teste.java:21: warning: getDate() in java.util.Date has been deprecated dt.setDate(dt.getDate() + somaDias); ^ teste.java:21: warning: setDate(int) in java.util.Date has been deprecated dt.setDate(dt.getDate() + somaDias); ^ 3 warnings
Responder

Gostei + 0

09/04/2009

Sandrod

TEM OUTRA COISA IMPORTANTE! A PARTIR DESTE PROBLEMA EU NÃO CONSIGO COMPILAR AS CLASSES que instanciam a classe teste. Ou seja, a classe compila e roda, mas ao ser instanciada, não consigo compilar a classe que a instancia. COMO POSSO RESOLVER ISSO?
Responder

Gostei + 0

09/04/2009

Sandrod

Pessoal eu alterei o método abaixo, pois o método que informei acima estava causando erro :cry: : A classe compilava, mas eu não conseguia instanciá-la de forma alguma em outra classe. Agora está certinho! Até mais! :D
	public String somaData(String data, int somaDias)
	{			
	  	 	String dataVerificada = converteDataBrasil(verificaMascaraData(data));
	 	 
	  	 	int dia = Integer.parseInt(dataVerificada.substring(0, 2));
	  	 	int mes = Integer.parseInt(dataVerificada.substring(3, 5));
	   	int ano = Integer.parseInt(dataVerificada.substring(6, 10));
	   	    
		  	SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		  	
	  	    Calendar calendar = new GregorianCalendar(ano, mes, dia);
	  	    Date dt = new Date();
		    try
		    { 		      
		  	    dt = sdf.parse(dataVerificada);
				 calendar.setTime(dt);
  	  	       calendar.add(calendar.DATE, somaDias);			      
			 }
			 catch(ParseException e)
			 {
			 	System.out.println(e.getMessage());
			 }
			      
	  	    
		 	return sdf.format(calendar.getTime());
	}
[quote="[color=darkgreen][i]2010-04-01[/i] mensagem editada por [i][url=http://javafree.uol.com.br/viewprofile.jbb?u=5274]simu[/url][/i][/color]"][color=green] - adicionadas as tags [b][co[/b][b]de][/b] e [b][/co[/b][b]de][/b] [/color]
Responder

Gostei + 0

01/04/2010

Aurélio Lima

Valew sandrod... seu método foi mto util pra mim... Abração!
Responder

Gostei + 0

22/10/2010

Silvonei Rosa

Bom valew, este Post me ajudou muito, obrigado!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar