[RESOLVIDO]Problema com formatação de Hora

6 respostas
A

Depois de muito procurar no forum não consegui encontrar nada parecido com o que quero fazer.
Por exemplo, eu tenho num arquivo .xls uma coluna com um horario no formato HH:mm:ss e eu tenho o seguinte código que valida a hora:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");       
  try {  
     sdf.parse(input);   
     return false;   
  } catch (ParseException e) {
     return true;   
  }

só que esse código não tá validando como certo a hora 09:45, ou seja, menor que 10 horas só por causa do zero.
como faço para tornar esta data válida?

6 Respostas

T
import java.util.*;
import java.text.*;

class TesteSimpleDateFormat {
    public static void main (String[] args) {
        DateFormat df = new SimpleDateFormat ("HH:mm");
        df.setLenient (false);
        try {
            Date dt = df.parse ("09:45");
            System.out.println (df.format(dt));
        } catch (ParseException ex) {
            ex.printStackTrace();
        }
    }
}

Tem coisa errada em outro lugar. Eu usei o mesmo padrão (“HH:mm”) e funcionou.

fernei

ACPF1986

Como esta hora esta vindo do seu xml?

09:45 ou 9:45

Da uma pesquisada também nas mascaras do SimpleDateFormat;

http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

ou

http://fmpp.sourceforge.net/datetimepattern.html

pois acredito que vc deverá usar o Patterns:

hh:mm

Testa ai e posta o resultado vlw!!!

A

Continua não dando certo. da primeira forma…pois qdo postei a minha resposta não tinha visto a ultima…Será que isso depende da Regionalização do Computador?
Segue o meu codigo novamente

public boolean validaHora(String input) {       
  SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
  sdf.setLenient(false);
  try {  
     Date dt = sdf.parse(input);   
     return false;   
  } catch (ParseException e) {
     return true;   
  }   
}
T

Podia dignar-se ao obséquio de imprimir pelo menos um “input” que esteja dando problemas? Eu tenho certeza que não é para “09:45”; pode ser que tenha um lixo qualquer antes, no meio, ou depois dessa string (por exemplo, um caracter ASCII NUL, que não aparece quando impresso).

T

Ei ei ei! Sua rotina validaHora retorna true quando a hora é inválida? Que estranho… É isso mesmo?

A

Disfarça…
Eu percebi e corrigi o erro depois de postar a msg…
Mas minha função valida hora e deve retornar true se for valida e false se for invalida

Criado 8 de janeiro de 2009
Ultima resposta 8 de jan. de 2009
Respostas 6
Participantes 3