Somar 10 dias a uma data.
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
Curtidas 1
Melhor post
Sandrod
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.
Muito obrigado Paulo!
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));GOSTEI 1
Mais Respostas
Paulohbmetal
09/04/2009
Bom, vc pode fazer assim:
A Paz!!
minhaData.setDate(minhaData.getDate() + 10);
GOSTEI 0
Sandrod
09/04/2009
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()));
}GOSTEI 0
Sandrod
09/04/2009
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;
}
}GOSTEI 0
Paulohbmetal
09/04/2009
[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.
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!!
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));GOSTEI 0
Sandrod
09/04/2009
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
GOSTEI 0
Sandrod
09/04/2009
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?
GOSTEI 0
Sandrod
09/04/2009
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
[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]
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());
}
GOSTEI 0
Aurélio Lima
09/04/2009
Valew sandrod... seu método foi mto util pra mim...
Abração!
GOSTEI 0
Silvonei Rosa
09/04/2009
Bom valew, este Post me ajudou muito, obrigado!
GOSTEI 0