Conversao Data Long Int

25 respostas
E

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?

25 Respostas

Foxlol

Veja o método add da classe Calendar:

http://java.sun.com/javase/6/docs/api/java/util/Calendar.html

Flw

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:

ViniGodoy

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);
nel

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.

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.

E

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.

Poderia me ajudar com esta lib?

Nem mesmo sei o que é… É uma biblioteca, como coloca ela???

Estou aprendendo agora

E

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:

Tentei as duas alternativas e nenhuma deu certo… Também não entendi seu codigo

nel

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.

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.

thundercas

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

Tentei as duas alternativas e nenhuma deu certo… Também não entendi seu codigo

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…

Foxlol

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();
}
E

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.

Realmente, deu certo sim!!!

Mas veio no seguinte formato… 25/11/09 00:00

mas eu queria que fosse assim: 25/11/2009

E
Foxlol:
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();
}

Noosss... desse jeito a data retornou no formato do windows...

Thu Dec 02 00:00:00 BRST 2010

B

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.

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.

E

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.

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));
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:

E

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:

Desculpe-me, digitei errado…

Ele tem esse parametro sim (“dd/MM/yyyy”) eu é que esqueci de escreve-lo aqui…

E

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:

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
E

Olha, converti a data DIA/MES/ANO HORA:MINUTO para DIA/MES/ANO masss ela esta aparecendo assim:

25/11/0009… ao inves de ser 25/11/2009

nel

Ellen, é impossível que não funcione ai desta forma:

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

Lembrando que você não deve usar aspas duplas no System.out.println() e sim colocar direto, apenas copie e cole o código acima. Testei aqui e funcionou perfeitamente.

Outro detalhe, você deu DAY_OF_MONTH mas esqueceu do ‘c’ ou foi apenas erro de digitação?
Abraço.

E

nel:
Ellen, é impossível que não funcione ai desta forma:

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

Lembrando que você não deve usar aspas duplas no System.out.println() e sim colocar direto, apenas copie e cole o código acima. Testei aqui e funcionou perfeitamente.

Outro detalhe, você deu DAY_OF_MONTH mas esqueceu do ‘c’ ou foi apenas erro de digitação?
Abraço.

Sim… masssss olha só… pq entao ta diferente???
Esta identico ao seu!!!

E

Ellensmp:
nel:
Ellen, é impossível que não funcione ai desta forma:

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

Lembrando que você não deve usar aspas duplas no System.out.println() e sim colocar direto, apenas copie e cole o código acima. Testei aqui e funcionou perfeitamente.

Outro detalhe, você deu DAY_OF_MONTH mas esqueceu do ‘c’ ou foi apenas erro de digitação?
Abraço.

Vc notou que esta saindo 09 ao inves de 2009 e qndo eu coloco pra sair o formato que eu quero ele sai 0009 ao inves de 2009?

Sim… masssss olha só… pq entao ta diferente???
Esta identico ao seu!!!

nel

Ellen, estou postando novamente o código.

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

Este é exatamente o código que eu tenho aqui, e eis a saída: 25/11/2009

Sinceramente, senão está neste formato a sua saída sinceramente não sei o que pode ser, cria uma classe apenas com um método main apenas para testar esta rotina, assim como eu fiz aqui, apenas uma classe que possui um main e o código acima para testar e responder á você, foi o que eu fiz.

É isso.

Abraços.

E

nel:
Ellen, estou postando novamente o código.

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

Este é exatamente o código que eu tenho aqui, e eis a saída: 25/11/2009

Sinceramente, senão está neste formato a sua saída sinceramente não sei o que pode ser, cria uma classe apenas com um método main apenas para testar esta rotina, assim como eu fiz aqui, apenas uma classe que possui um main e o código acima para testar e responder á você, foi o que eu fiz.

É isso.

Abraços.

Vlw… muito obrigada… era isso mesmo…

Eu é que digitei uma coisinha errada aqui… desculpas,

TKS

Criado 25 de novembro de 2009
Ultima resposta 25 de nov. de 2009
Respostas 25
Participantes 6