Conversao Data Long Int

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 :slight_smile:

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);
1 curtida

Apenas um comentário.

O Joda Time foi adotado no Java 6 agora, existe uma JRE especifica para este padrão, estou certo? :slight_smile:
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 :slight_smile: [/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 :slight_smile: [/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? :slight_smile:

[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? :slight_smile:
[/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? :slight_smile:
[/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