Problemas com SimpleDataFormat

7 respostas
R

Boa tarde pessoal …

Não consigo passar o TimeZone para o SimpleDataFormat.

Quando passo apenas para o Calendar, funciona normal. Mas quando vou formatar para pegar somente os dados que eu preciso (que no caso é hh:mm) não vai.

segue o código…

double qtdeAulas = Double.parseDouble(txtEventosAgQtde.getText()); //retorna um valor digitado no txtfield
       
        SimpleDateFormat formatoData = new SimpleDateFormat("hh:mm");
        String data = formatEventosAgHrInicio.getText();
        TimeZone tz = TimeZone.getTimeZone("GMT-3");
        formatoData.setTimeZone(tz);
        TimeZone.setDefault(tz);
        Calendar c = GregorianCalendar.getInstance(tz);
        
        try {
            c.setTime(formatoData.parse(data));
        } catch (ParseException ex) {
            Logger.getLogger(TelaCadEventosAg.class.getName()).log(Level.SEVERE, null, ex);
        }
        c.add(Calendar.MINUTE, (int) (qtdeAulas * 60.0)); //cada "qtdeAulas" corresponde a 1 hora. 
        formatEventosAgHrFim.setText(formatoData.format(c.getTime()));

Obrigado!

7 Respostas

C

Cara você vai precisar do TimeZone para salvar hora e minuto atual?

E

java.util.Date e java.util.Calendar não são adequados para trabalhar com intervalos de tempo (do tipo 560 minutos = 9 horas 20 minutos, que é o tipo de coisa que você quer fazer), apenas com instantes absolutos de tempo (do tipo "23 de julho de 2012, 12:34:56.789?.
O correto nesse caso ou é fazer a conta no braço (que no seu caso é decepcionantemente fácil, basta fazer contas com / e %) ou então usar o Joda-Time (que no seu caso em particular também não é muito adequado - um valor como 1551 minutos ele mostraria como 1 dia, 1 hora, 51 minutos em vez das desejadas (pelo que imagino) 25 horas e 51 minutos.

R

cembjr, vamos lá…

Quado retorno a hora, me retorna 2:00.

Mas eu quero retorne 14:00.

se não é o timezone que faz isso, é o que então?

grato

C
new SimpleDateFormat("HH:mm").format(new Date());

Tenta isso ai!

C

O "hh:mm" retorna no formato 12 horas. já o "HH:mm" é no formato 24 horas! Espero que isso te ajude

R

entanglement:
java.util.Date e java.util.Calendar não são adequados para trabalhar com intervalos de tempo (do tipo 560 minutos = 9 horas 20 minutos, que é o tipo de coisa que você quer fazer), apenas com instantes absolutos de tempo (do tipo "23 de julho de 2012, 12:34:56.789?.
O correto nesse caso ou é fazer a conta no braço (que no seu caso é decepcionantemente fácil, basta fazer contas com / e %) ou então usar o Joda-Time (que no seu caso em particular também não é muito adequado - um valor como 1551 minutos ele mostraria como 1 dia, 1 hora, 51 minutos em vez das desejadas (pelo que imagino) 25 horas e 51 minutos.

cara, acho que não me expressei direito.
eu quero algo bem simples… o usuario digita em um campo ex:
qtde de aulas: 2
hr inicio : 14:00

dai quero calcular o hr final.

hr fim: 16:00 - mas o sistema ia calculas esse horario automaticamente.

A solução que encontrei foi usar o calendar e multiplicar os minutos. Ele calcula direitinho, porem, me retorna as hrs em 4:00 e eu quero 16:00.

Se não ficou claro, por favor só falar.

grato

R

Exatamente isto!! hehe

desculpe a ignorancia estou aprendendo agora a progamar…

obrigado!!!

Criado 21 de julho de 2012
Ultima resposta 21 de jul. de 2012
Respostas 7
Participantes 3