Duvida Data!

16 respostas
L

galera como poderia fazer que a data seja correspondida ao dia de hj, e o ano dando erro

caso o cara cadastre assim 11/12/1111 - teria que dar erro

poderia ser assim o correto 11/12/2010 - o certo

como posso fazer desse jeito!

package util.Data;

import java.util.GregorianCalendar;
  


public class ValidaData {   
  
	public ValidaData() {   
	}   
    //public static void main(String[] s) {   
       // System.out.println(validaData("22/09/2010"));       
   // }   
       
    public static boolean validaData(String data) {  
    	
        GregorianCalendar calendar =  new GregorianCalendar();     
        int dia = 0,mes = 0,ano = 0;   
        
        String diaStr = data.substring(0,2);   
        String mesStr = data.substring(3,5);   
        String anoStr = data.substring(6,10);   
        try {   
            dia = Integer.parseInt(diaStr);   
            mes = Integer.parseInt(mesStr);   
            ano = Integer.parseInt(anoStr);   
        } catch (Exception e) {   
            return false;   
        }   
        if (dia < 1 || mes < 1 || ano < 1)   
            return false;   
        else   
            if (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)   
                if (dia <= 31)   
                    return true;   
                else   
                    return false;   
            else   
                if (mes == 4 || mes == 6 || mes == 9 || mes == 11)   
                    if (dia <= 30)   
                        return true;   
                    else   
                        return false;   
                else   
                    if (mes == 2)   
                        if (calendar.isLeapYear(ano))   
                            if (dia <= 29)   
                                return true;   
                            else   
                                return false;   
                        else   
                            if (dia <= 28)   
                                return true;   
                            else   
                                return false;   
                    else   
                        if (mes > 12)   
                            return false;   
        return true;   
    }   
  
}

16 Respostas

O

Peraí, não entendi. Pra mim, 1111 é um ano válido. O que é um ano inválido no seu caso?

L

assim eu queria validar como o ano que vc esta e não deixa como 1111, vo fazer um cadastro com esse ano logico que não néh …isso seria logica !
por isso como posso fazer se ele fizer isso dar um erro ,e teria que ser o ano que ele esta… entendeu!

O

Então… se neste cadastro a única opção de ano é o atual, pra que o usuário precisa preencher? Ou pra que você dá mais de uma opção?

L

logico que vai necessário, como vo saber o dia que foi feito o cadastro !

E

lokit"s:
assim eu queria validar como o ano que vc esta e não deixa como 1111, vo fazer um cadastro com esse ano logico que não néh …isso seria logica !
por isso como posso fazer se ele fizer isso dar um erro ,e teria que ser o ano que ele esta… entendeu!

Acho que estou ficando analfabeto. Não estou conseguindo entender o que está escrito.

lucas_carvalho100

Um if com o ano atual não resolve?

bolad

entanglement:
lokit"s:
assim eu queria validar como o ano que vc esta e não deixa como 1111, vo fazer um cadastro com esse ano logico que não néh …isso seria logica !
por isso como posso fazer se ele fizer isso dar um erro ,e teria que ser o ano que ele esta… entendeu!

Acho que estou ficando analfabeto. Não estou conseguindo entender o que está escrito.

é cara vc não entendeu pq , tenta ler com mais calma !!! ja que diz que é um analfabeto certo!

C

cara colocar um if...

assim...

if(ano != java.util.Calendar.getInstance().get(Calendar.YEAR)){
          
          // ano é tua variavel iteira que o cara digito no caso se for diferente de 2010 vai entrar no if
         // digito no caso se for diferente de 2010 vai entrar no if
         //java.util.Calendar.getInstance().get(Calendar.YEAR) --- isso retorna o ano atual
         // Aqui tu faz oque tu quiser para da o erro...
        // pode ser um return false;
 
}

espero ter ajudado

Anime

Oi lokit"s,

Não seria mais facil se o sistema já entrasse com a data atual,assim o usuário não precisa ter esse trabalho… :wink:
Ou tem outras datas?

L

ola Anime

mas vc teria algum exemplo !

Anime
GregorianCalendar thisday = new GregorianCalendar();
      Date d = thisday.getTime();
      DateFormat df = DateFormat.getDateInstance();
      String s = df.format(d);
      //System.out.println("Hoje é " + s);
        lb_datave.setText(s);
C

Cara teu projeto é WEB? Desktop??

tipo para gera uma data com o dia de hoje é muito Simples

public static String getToday(){

Calendar calendar = Calendar.getInstance();

   String hoje = calendar.get(Calendar.DAY_OF_MONTH) + "/"  +
                       calendar.get(Calendar.MONTH)  + "/" + 
                       calendar.get(Calendar.YEAR) ;

 return hoje;

 // isso geraria uma String com 24/8/2010 
 // caso tu queira que o 8 fique 08... faz um if para se for menor que 10 adicionar um 0 na frente do numero...

}

L

desktop!!!

Eric_Yuzo

Com SimpleDateFormat você não precisa montar a String na mão.

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); String hoje = sdf.format(Calendar.getInstance().getTime());
Falou…

O

Vamos lá.

1. Pra pegar a data atual (data do SO onde a JVM está rodando) é só chamar o construtor default da classe Date ou Calendar.getInstace();

2. Tudo bem deixar os formulários com String, mas depois converta e trabalhe com datas mesmo.

3. Para converter fazendo as devidas formatações use o SimpleDateFormat. Pra não deixar o usuário entrar com valor inválido invoque setLenient(false).

4. Pra comparar uma data com outra, a atual inclusive use equals(), before(), after(), compareTo() de acordo com sua necessidade. Se quiser comparar datas com apenas alguns campos (dia, mês e ano, por exemplo), uma das possíveis soluções é dar um clear() num Calendar e settar os valores apropriados.

5. O pessoal sempre indica o uso da biblioteca JodaTime.
public static void main(String[] args) {
      testaData("24/09/2010");
      testaData("14/12/1111");
      testaData("45/12/1111");
   }

   public static void testaData(String dataString) {
      try {
         DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
         sdf.setLenient(false);
         Date data = sdf.parse(dataString);
         Calendar cal = Calendar.getInstance();
         int ano = cal.get(Calendar.YEAR);
         int mes = cal.get(Calendar.MONTH);
         int dia = cal.get(Calendar.DATE);
         cal.clear();

         cal.set(Calendar.YEAR, ano);
         cal.set(Calendar.MONTH, mes);
         cal.set(Calendar.DATE, dia);

         System.out.println(cal.getTime().equals(data));
      } catch (ParseException e) {
         System.out.println("Data inválida: " + dataString);
      }
   }
O

Sobre os pontos 2 e 3: é claro que já há muitos frameworks (para os vários tipos de aplicação) com componentes que já encapsulam estes comportamentos.

Criado 24 de setembro de 2010
Ultima resposta 24 de set. de 2010
Respostas 16
Participantes 8