Script para validar HORA

2 respostas
F

Olá.

Preciso de um script para fazer validação de hora, tipow 15:30:20 ( HH:MM:SS ), para evitar q o usuário entre com qualquer valor e tbm evitar q entre com um valor do tipow 28:75:98…
Estou viajando nas funções, regular expressions…

Alguém pode me ajudar?

Desde já, agradeço.

Walter

2 Respostas

E

exemplinho qq coisa soh mudar a classe de validação pra te retornar oq vc precisa e/ ou integrar com a validação

import java.util.*;
import javax.swing.*;


class cHora {
    
    private String in;
    private StringTokenizer st;
    
    private int hr, min, sec;
    
    private String erro;
    
    public cHora() {
        // inicializando os atributos
        in = erro = "";
        hr = min = sec = 0;
    }
    
    // método para validar a hora, recebe a string da hora que foi digitada
    public void verifica( String hora ) {
        String tmp = "";
        // contador para saber qual parte da string esta
        int  count = 1;
        // definindo a divisão da string em partes delimitadas pelo caractere ':'
        st = new StringTokenizer(hora,":");
        
        // passando para valores numéricos
        while(st.hasMoreTokens()) {
            tmp = st.nextToken();
            switch( count ) {
                case 1: // hora
                    hr = Integer.parseInt( tmp );
                    break;
                case 2: // minutos
                    min = Integer.parseInt( tmp );
                    break;
                case 3: // segundos
                    sec = Integer.parseInt( tmp );
                    break;
            }
            count++;
        }
        
        // chamando método de calidação 
        valida();
    }
    
    // método para validação de cada parte da hora informada
    private void valida() {
        erro = "";
        
        // verificando a hora
        if( hr >= 24 ) {
            erro += " | Hora Invalida : " + hr + " |";
        }
        if( min >= 60 ) {
            erro += " | Minutos Invalido : " + min + " |";
        }
        if( sec >= 60 ) {
            erro += " | Segundos Invalido : " + sec + " |";
        }
        
        // verificando se foi detectado algum erro
        if( erro.length() != 0 ) {
            JOptionPane.showMessageDialog(null,
                                          "A hora digita da é invalida : " + hr +":"+ min +":"+ sec + "\n\n"+ erro,
                                          "Hora incorreta",
                                          JOptionPane.ERROR_MESSAGE);
        // caso a hora digitada seja valida    
        } else {
            JOptionPane.showMessageDialog(null,
                                          "A hora digita da é válida : " + hr +":"+ min +":"+ sec,
                                          "Hora correta",
                                          JOptionPane.INFORMATION_MESSAGE);
        }
    }
    
}


public class testeHora {
    
    private String hora;
    private cHora confere = new cHora();
    
    /** Creates a new instance of testeHora */
    public testeHora() {
        hora = "";
        hora = JOptionPane.showInputDialog(null,"Informe um horario no formato-> ??:??:??","Digite a hora",JOptionPane.PLAIN_MESSAGE);
        confere.verifica( hora );
        // finaliza o programinha
        System.exit(0);
    }
    
    public static void main(String[] args) {
        new testeHora();
    }
    
}

[]'s
Erko Bridee

S

Não entendi bem o que o Walter, vulgo faroestecaboclo, quer dizer com script. Javascript?

Se não for, nada mais prático do que deixar para java.text.SimpleDateFormat:

import java.text.*;

public class foo { 
  
    public static boolean valiDate(String str, String formato) {
        DateFormat df = new SimpleDateFormat(formato);
        try {
            df.setLenient(false);
            java.util.Date d = df.parse(str);
        } catch (ParseException e) {
            return false;
        }
        return true;
    }

    public static void main(String args[]) {

        String str = "15:30:20";

        if (valiDate(str, "HH:mm:ss")) {
            System.out.println("Parabens,\nAcertamos o formato da hora");
        } else {
            System.out.println("temos um problema com " + str);
        }
    }
}

a Praticidade fica por conta de um método que poderá ser usado para validar diversos formatos, com 12-24 horas, datas ddmmaa, aammdd, etc.

Criado 10 de setembro de 2004
Ultima resposta 10 de set. de 2004
Respostas 2
Participantes 3