Pattern Data (Formatação condicional, apenas se houver valor != 0)

3 respostas
Lavieri

Preciso fazer uma formatação condicional, de preferencia, e se possivel, com pattern, alem disso gostaria de colocar texto na saida… não to seguindo fazer, seria algo assim

“10h e 30m”

ou, no caso de os minutos serem zero…

“10h”

Ps.: estou usando para web, com a taglib fmt por exemplo: Horário: das <fmt:formatDate value="${evento.horaInicial}" pattern=“H’h e ‘m’m’” />

gera a saida 22h e 0m

queria q ficasse 22h … so era pra aparecer o e XX m caso houvesse minutos

3 Respostas

E

10h e 30 m? Que formato esquisito.

Eu prefiro ler “10:30”.

Se é para escrever por extenso, prefiro “10 horas” ou “10 horas e 30 minutos” ou pior ainda, “10 dias, 10 horas e 1 minuto” (veja a diferença do singular com o plural).

Se seu formato de datas é esquisito, você precisa criar uma classe Java para formatar exatamente do jeito que você quer, ou então uma expressão EL (que é um porre porque terá de ser repetida inúmeras vezes na sua página). Acho que dá menos problema ter uma classe de formatação.

De qualquer maneira, você teria de ler o javadoc de SimpleDateFormat. Pelo que vejo, ele não tem essa formatação condicional. ChoiceFormat ( http://java.sun.com/javase/6/docs/api/java/text/ChoiceFormat.html ) tem formatação condicional, mas é dificil de usar no seu caso em particular (em que a condição é “minutos == 0”, não um intervalo, como é o caso de ChoiceFormat.

ONHATE

Acho que você precisa disso…

http://java.sun.com/j2se/1.5.0/docs/api/java/util/Formatter.html

um exemplo:

Date dt = new Date();
        if (dt.getMinutes() > 0) {
            System.out.println(String.format("%1$tHh e %1$tMm", dt));
        } else {
            System.out.println(String.format("%1$tHh", dt));
        }
ONHATE

Desculpa não tinha percebido esta parte…

Criado 9 de setembro de 2009
Ultima resposta 10 de set. de 2009
Respostas 3
Participantes 3