Transformar uma string no formato de Hora ou Data para um Date
22 respostas
sudeval
Bem galera to com o seguinte problema:
Recebo uma String com a formatacao de hora ou data.
caso seja Hora (“151230”) e data (“08062005”)
ae preciso de um metodo que pegue essa String e transforme ela numa objeto Date para ser jogado no banco.
é complicado?
Fiz algo assim:
falta transformar isso ae num Date… -> DDMMAAAA
Algo parecido tbem devo fazer com a hora(HHMMSS), receber ela como string e retornar um Date.
Você já tentou usar o SimpleDateFormat ?
Ele tem um método que retorna um Date. Este método é o parse…
Ou se você preferir, use a classe Calendar, que é muito mais completa.
Dê uma olhada no JavaDOC.
no caso pq vc esta declarando a variavel com a data e hora, nao é interessante vc pegar esses valores de algum lugar. Como vc vai recuperar esses valores ??
vivi_grieco
O método formatter.format() vc está transformando um objeto do tipo java.util.Date em String.
Para transformar de String pra Date, use o método
formatter.parse(String)
No caso, o seu código ficaria assim:
String data_c = n_data.getText();
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date data = formatter.parse(data_c);
vivi_grieco
vc tá usando alguma IDE pra desenvolvimento?
Esse erro ocorreu pq tem q estar entre um bloco Try-catch, , dessa forma:
try{Stringx="14/06/2005";SimpleDateFormatformat=newSimpleDateFormat("dd/MM/yyyy");Dated=format.parse(x);}catch(ParseExceptione){// TODO Auto-generated catch blocke.printStackTrace();}
E
emanoeltadeu
Pessoal, no meu caso preciso somente me preocupar com a hora. Recebo uma string do tipo
hora = “12:30” e preciso fazer uma validação, pra saber se a hora está no formato correto, no estilo hh:mm. preciso verificar se hh é maior do que 23 e etc. alguém pode me dar uma idéia de como fazer isso?
sudeval
so precisa saber se ta ok ou não?
pode ser até com substring!
lembrandoque:hora-0to23minuto-0to59inth=Integer.parseInt(arrayHora[0]);intm=Integer.parseInt(arrayHora[1]);if(h<0||h>23){System.out.println("A casa caiu!");}if(m<0||m>59){System.out.println("E agora jose?!");}
talvez tenha alguma outra forma mais simples, mais é por ae
E
emanoeltadeu
kra vlw vou ver isso tb…mas tava pensando no uso de expressões regulares…oq acha disso:
no caso testo os cinco caracteres: hh:mm. no caso o prob é q não posso ter a hora 29, mas posso ter a 19. aí a validação do segundo caractere só pode ir até 9 qdo o primeiro for 1…aí ja complicou um pouco…
sudeval
Jesus! :shock:
cara!
da forma que eu disse resolve o teu problema, se tu não garante o que vai chegar tu pode até fazer um try catch no momento do Integer.parseInt(String), que resolve por completo tudo!!
try{inth=Integer.parseInt(arrayHora[0]);intm=Integer.parseInt(arrayHora[1]);catch(Exceptione){System.out.println("Como tu faz um negocio desse homi?");}
o que tu acha ?
ps.: tu vem do perl é? hehe! galera do perl curte regexp!
é como eu disse antes, tem diversas formas de fazer!
E
emanoeltadeu
realmente com regexp ficaria mais complicado...fiz assim e ta funcionando:
então pronto...vlw pela ajuda!
ps: nunca trabalhei com perl...mas achava q com as regexp as coisas ficariam melhores nesse exemplo...hauhauahuhaauuahha
sudeval
hehe! blz cara ! qualquer coisa tamos ae!
Eu uso perl pra fazer uns scripts quando preciso, ae sim venho a usar umas regexp pra facilitar as coisas, mais tem é o unico lugar que eu uso
t+
E
emanoeltadeu
mas tipo, tem algum método/API eu dando da data tipo:
isDate("31/02/2007")
ele retornasse falso? pra ver se a data existe…
sudeval
publicbooleanisDateValid(StringdataStr){SimpleDateFormatsdf=newSimpleDateFormat("dd/MM/yyyy");sdf.setLenient(false);// o moço que vai ver se os numeros ultrapassam o permitido!try{Datedata=sdf.parse(dataStr);}catch(ParseExceptione){returnfalse;}returntrue;}
E
emanoeltadeu
no caso, na linha Date data = sdf.parse(data); era pra ser
Datedata=sdf.parse(dataStr);
certo?
sudeval
emanoeltadeu:
no caso, na linha Date data = sdf.parse(data); era pra ser
Datedata=sdf.parse(dataStr);
certo?
isso, editei la erro digitando mesmo!!!
E
evandro_ti
Pessoal, não estou conseguindo implementar um método que funcione como Cronometro Regresssivo, ele deve receber por parametro duas Strings (minutos,segundos) e imprimir na tela a contagem regressiva.
Alguém tem uma ideia?
V
vsouza
Gente eu tbm estou com problemas quanto ao uso dessa classe, porfavor me ajudem…
Estou pegando um String (ex: 13/05/1976) de um formulario em Swing, que é uma data: String data_c = n_data.getText();
O método formatter.format() vc está transformando um objeto do tipo java.util.Date em String.
Para transformar de String pra Date, use o método
No caso, o seu código ficaria assim:
String data_c = n_data.getText();
SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
Date data = formatter.parse(data_c);
V
vsouza
Ok, funcionou…
Muitissimo obrigado.
Victor
vivi_grieco:
vc tá usando alguma IDE pra desenvolvimento?
Esse erro ocorreu pq tem q estar entre um bloco Try-catch, , dessa forma:
try{Stringx="14/06/2005";SimpleDateFormatformat=newSimpleDateFormat("dd/MM/yyyy");Dated=format.parse(x);}catch(ParseExceptione){// TODO Auto-generated catch blocke.printStackTrace();}