Pessoal,
Tenho uma data (15/11/2009) e tenho que acrescentar a ela 10 dias, ou seja, (15/11/2009 +10 = 25/11/2009).
Como somo data mais int e me dá uma data?
Pessoal,
Tenho uma data (15/11/2009) e tenho que acrescentar a ela 10 dias, ou seja, (15/11/2009 +10 = 25/11/2009).
Como somo data mais int e me dá uma data?
Veja o método add da classe Calendar:
http://java.sun.com/javase/6/docs/api/java/util/Calendar.html
Flw
Boa tarde.
Com certeza tem meios melhores de se fazer, mas aqui está uma forma que funciona:
Date data = new SimpleDateFormat("dd/MM/yyyy").parse(source);
data.setDate(data.getDate()+10);
Editando: Aqui está uma melhor forma para isso:
Date data = new SimpleDateFormat("dd/MM/yyyy").parse(source);
Calendar c = Calendar.getInstance();
c.setTime(data);
c.add(c.DAY_OF_MONTH, 10);
data = c.getTime();
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(data));
Abraços
Se está tendo que fazer continhas com data, considere fortemente a possibilidade de usar essa lib aqui:
http://joda-time.sourceforge.net/
Onde você pode fazer simplesmente:
data.addDays(10);
Apenas um comentário.
O Joda Time foi adotado no Java 6 agora, existe uma JRE especifica para este padrão, estou certo?
Abraços.
Eu sei que foi proposta na JSR310:
http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api.html
Mas não lembro se chegou a ser mesmo incluído.
[quote=ViniGodoy]Eu sei que foi proposta na JSR310:
http://today.java.net/pub/a/today/2008/09/18/jsr-310-new-java-date-time-api.html
Mas não lembro se chegou a ser mesmo incluído.[/quote]
Poderia me ajudar com esta lib?
Nem mesmo sei o que é… É uma biblioteca, como coloca ela???
Estou aprendendo agora
[quote=nel]Boa tarde.
Com certeza tem meios melhores de se fazer, mas aqui está uma forma que funciona:
Date data = new SimpleDateFormat("dd/MM/yyyy").parse(source);
data.setDate(data.getDate()+10);
Editando: Aqui está uma melhor forma para isso:
Date data = new SimpleDateFormat("dd/MM/yyyy").parse(source);
Calendar c = Calendar.getInstance();
c.setTime(data);
c.add(c.DAY_OF_MONTH, 10);
data = c.getTime();
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(data));
Abraços [/quote]
Tentei as duas alternativas e nenhuma deu certo… Também não entendi seu codigo
Apenas uma correção, o Joda Time foi adicionado ao JEE 6.
Ellen, da forma como demonstrei acima resolve o seu problema, para aprender sobre a API acesse o link que o Viny passou e comece a “brincar” com a API, é uma excelente forma de aprender sobre ela.
Testei aqui e funcionou perfeitamente. Ali eu usei da seguinte forma. Source é a string contendo “15/11/2009”, transformo em um java.util.Date. Pega uma instancia para o Calendar, adiciono o date ao calendar e em seguida modifica o dia do mês usando o método add. Em seguida, pego a nova data (todo o conteúdo dela, dia, mês, ano) e jogo novamente na java.util.Date.
Não era isso que você queria?
Abraços.
Aqui o código completo:
String source = "15/11/2009";
Date data = new SimpleDateFormat("dd/MM/yyyy").parse(source);
Calendar c = Calendar.getInstance();
c.setTime(data);
c.add(c.DAY_OF_MONTH, 10);
data = c.getTime();
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(data));
A saída foi 25/11/2009, ou seja, somou 10 dias ao dia inicial. Foi o que você desejava não? Lógico, talvez tenha que modicar alguma coisa de acordo com a sua necessidade, mas a essência é esta.
[quote=Ellensmp][quote=nel]Boa tarde.
Com certeza tem meios melhores de se fazer, mas aqui está uma forma que funciona:
Date data = new SimpleDateFormat("dd/MM/yyyy").parse(source);
data.setDate(data.getDate()+10);
Editando: Aqui está uma melhor forma para isso:
Date data = new SimpleDateFormat("dd/MM/yyyy").parse(source);
Calendar c = Calendar.getInstance();
c.setTime(data);
c.add(c.DAY_OF_MONTH, 10);
data = c.getTime();
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(data));
Abraços [/quote]
Tentei as duas alternativas e nenhuma deu certo… Também não entendi seu codigo[/quote]
Ellen,
Porque não deu certo?? Ocorreu algum erro?? Pesquisa no google “Tutorial Calendar Java” e terá tudo o que precisa para realizar esta operação.
Boa Sorte…
Exemplo:
public Date adicionarDiasNaData(Date dataASerAlterada, int qtdDeDias) {
//Obtém uma instância de Calendar
Calendar calendar = Calendar.getInstance();
//Configura o Calendar com a data que você passou
calendar.setTime(dataASerAlterada);
//Adicionar a quantidade de dias no Calendar
calendar.add(Calendar.DAY_OF_MONTH, qtdDeDias);
//Retorna a data alterada
return calendar.getTime();
}
[quote=nel]Aqui o código completo:
String source = "15/11/2009";
Date data = new SimpleDateFormat("dd/MM/yyyy").parse(source);
Calendar c = Calendar.getInstance();
c.setTime(data);
c.add(c.DAY_OF_MONTH, 10);
data = c.getTime();
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(data));
A saída foi 25/11/2009, ou seja, somou 10 dias ao dia inicial. Foi o que você desejava não? Lógico, talvez tenha que modicar alguma coisa de acordo com a sua necessidade, mas a essência é esta.[/quote]
Realmente, deu certo sim!!!
Mas veio no seguinte formato… 25/11/09 00:00
mas eu queria que fosse assim: 25/11/2009
[quote=Foxlol]Exemplo:
[code]
public Date adicionarDiasNaData(Date dataASerAlterada, int qtdDeDias) {
//Obtém uma instância de Calendar
Calendar calendar = Calendar.getInstance();
//Configura o Calendar com a data que você passou
calendar.setTime(dataASerAlterada);
//Adicionar a quantidade de dias no Calendar
calendar.add(Calendar.DAY_OF_MONTH, qtdDeDias);
//Retorna a data alterada
return calendar.getTime();
}
[/code][/quote]
Noosss… desse jeito a data retornou no formato do windows…
Thu Dec 02 00:00:00 BRST 2010
Você precisa usar um formatador que transforme o Date em String, Ellen. No Java tem o SimpleDateFormat que já deram como exemplo. Em JSTL tem o fmt:formatDate.
Ellen, poste o código onde você está efetuando esta transformação, fazendo o favor. Pois dá forma que indiquei á você e você mesmo disse que deu certo mas retornou a hora aqui retorna a data sem as horas.
[quote=nel]Ellen, poste o código onde você está efetuando esta transformação, fazendo o favor. Pois dá forma que indiquei á você e você mesmo disse que deu certo mas retornou a hora aqui retorna a data sem as horas.
[/quote]
Esse é o codigo:
String source = "15/11/2009";
Date data = new SimpleDateFormat("dd/MM/yyyy").parse(source);
Calendar c = Calendar.getInstance();
c.setTime(data);
c.add(c.DAY_OF_MONTH, 10);
data = c.getTime();
System.out.println(new SimpleDateFormat().format(data));
Pois é Ellen, você está usando o construtor default do SimpleDateFormat, ou seja, não está passando nenhum valor ou pattern. Adicione o pattern e o seu problema estará resolvido.
Nesta ali, assim:
seu código:
System.out.println(new SimpleDateFormat().format(data));
Faltou o pattern, então:
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(data));
Ok?
[quote=nel]Pois é Ellen, você está usando o construtor default do SimpleDateFormat, ou seja, não está passando nenhum valor ou pattern. Adicione o pattern e o seu problema estará resolvido.
Nesta ali, assim:
seu código:
System.out.println(new SimpleDateFormat().format(data));
Faltou o pattern, então:
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(data));
Ok?
[/quote]
Desculpe-me, digitei errado…
Ele tem esse parametro sim (“dd/MM/yyyy”) eu é que esqueci de escreve-lo aqui…
[quote=nel]Pois é Ellen, você está usando o construtor default do SimpleDateFormat, ou seja, não está passando nenhum valor ou pattern. Adicione o pattern e o seu problema estará resolvido.
Nesta ali, assim:
seu código:
System.out.println(new SimpleDateFormat().format(data));
Faltou o pattern, então:
System.out.println(new SimpleDateFormat("dd/MM/yyyy").format(data));
Ok?
[/quote]
E agora pra tirar as horas estou fazendo assim e descobri que ele diminiu o ano também… nao sei pq…
Ao inves de ficar 2009 fica 0009
Olhe oq eu estou fazendo:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
String source = "15/11/2009";
Date data = new SimpleDateFormat("dd/MM/yyyy").parse(source);
Calendar c = Calendar.getInstance();
c.setTime(data);
c.add(DATA_OF_MONTH, 10);
data = c.getTime();
System.out.println("new SimpleDateFormat().format(data)"); // Exibe 25/11/09
SimpleDateFormat lere = new SimpleDateFormat("dd/MM/yyyy HH:mm");
Date inicio = lere.parse(new SimpleDateFormat().format(data));
String finals = sdf.format(inicio);
System.out.println(finals); // Exibe 25/11/0009