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.
public class Teste {
public static void main(String[] args) throws ParseException {
String data="08062005";
String hora ="151230";
SimpleDateFormat formdata= new SimpleDateFormat("ddMMyyyy");
System.out.println(formdata.parse(data));
SimpleDateFormat formHora = new SimpleDateFormat("HHmmss");
System.out.println(formHora.parse(hora));
}
}
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 ??
Esse erro ocorreu pq tem q estar entre um bloco Try-catch, , dessa forma:
try {
String x = "14/06/2005";
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
Date d = format.parse(x);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
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?
so precisa saber se ta ok ou não?
pode ser até com substring!
ou até com o split!
algo como :
String hora = "12:30";
String[] arrayHora = hora.split(":");
ae vc pode fazer os testes:
lembrando que:
hora - 0 to 23
minuto - 0 to 59
int h = Integer.parseInt(arrayHora[0]);
int m = 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
kra vlw vou ver isso tb…mas tava pensando no uso de expressões regulares…oq acha disso:
/*Verifica se o campo hora está no formato hh:mm */
if(!horaProcessamento.matches("[[0-2][^a-zA-Z]] [[0-3][^a-zA-Z]] [[^0-9][^a-zA-Z]] [[0-5][^a-zA-Z]] [[0-9][^a-zA-Z]]")) {
errors.add("org.apache.struts.action.GLOBAL_MESSAGE", new ActionMessage("hora.invalid"));
}
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…
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 {
int h = Integer.parseInt(arrayHora[0]);
int m = Integer.parseInt(arrayHora[1]);
catch(Exception e) {
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!
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+
public boolean isDateValid(String dataStr) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdf.setLenient(false) ; // o moço que vai ver se os numeros ultrapassam o permitido!
try {
Date data = sdf.parse(dataStr);
} catch(ParseException e){
return false;
}
return true;
}
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.