Cansativo problema com Data

4 respostas
L

Olá pessoal,

depois de alguns probleminhas complexos, me deparo com um simples e comum. Data. auheuaheuae

eu pego de um parâmetro uma String formatada com dd/mm/yyyy e preciso somar 5 dias nela.
Até ae bele, eu consegui fazer (não sei se da melhor forma, portanto se alguem souber algo legal postae) mas o problema é que pra gravar no banco eu jogo como String.
Ae, essa string é formatada também dd/mm/yyyy (da mesma forma que recebi do parâmetro). Enfim, eu não consigo jogar o Date ou Calendar que eu tenho com os 5 dias a mais pra String formatado do jeito que eu quero! o toString() devolve um negócio sem formatação e phode tudo.

Eu estou procurando, já revirei api mas devo tá bem cego pra não achar a solução.

Se alguem puder ajudar, agradeço!

abraço

4 Respostas

H

Olá,
o melhor jeito que conheço de manipular datas é usando o SimpleDateFormat

SimpleDateFormat sdf= new SimpleDateFormat("dd/MM/yyyy");
//para tranformar date em texto
String strData = sdf.format(date);
//para transformar texto em date
try{
    Date data = sdf.parse(strData);
}catch(ParseException e)
{
   e.printStackTrace();
}

De qualquer forma, para gravar no banco angum date é melhor usar o PreparedStatment e usar a função setDate(new javax.sql.Date(data.getTime()))
F

Cara, se vc precisa somar 5 dias em uma data, que eu presumo que seja a data de hoje + 5 dias, tu pode fazer o seguinte:

use o import do java.sql.Date;

pegar a data :

java.util.Date data = new java.util.Date();

SimpleDateFormat form = new SimpleDateFormat( dd );

String dia = form.format( data );
Assim vc tera somente o dia de hoje, continuando

int soma = Integer.parseInt( dia );

soma = soma + 5;
form = null;

form = new SimpleDateFormat( yyyy/MM );

String dataCompleta = form.format( data ) + / + soma;

O formato da data no banco é aaaa/mm/dd.

data = null;
data = Date.valueOf( dataCompleta );

Explicando:
Esse método valueOf() retorna um objeto do tipo data, mas ele tem uma peculiaridade, digamos que a data de hoje seja:
28/02/2007, caso vc adicione 5 no dia, ficará: 33/02/2007
pode achar muito estranho, mas quando colocar no valueOf(), este método transformará a data assim: 05/03/2007, ou seja, ele transforma a data em uma data válida.

Depois pode formatar essa data com o SimpleDateFormat, que você já viu como faz…

bom, é isso, espero ter ajudado!

I

Olá!
Estou fazendo um aplicação q trabalha com data e encontrei o seguinte erro:
java.lang.ClassCastException: java.util.Date

Alguém poderia me ajudar?!

vlw!

D

vc está tentando converter um objeto para outro do tipo java.util.Date…
exemplo:

data = (java.util.Date) seuobjeto;

o problema é…q. o ‘seuobjeto’ nao deve ser do tipo java.util.Date ou nao é possível converter ‘seuobjeto’ para esse tipo…

t+

Criado 30 de janeiro de 2007
Ultima resposta 13 de fev. de 2007
Respostas 4
Participantes 5