Duvida Data!

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!

[code]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;   
}   

} [/code]

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

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!

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?

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

[quote=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![/quote]

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

Um if com o ano atual não resolve?

[quote=entanglement][quote=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![/quote]

Acho que estou ficando analfabeto. Não estou conseguindo entender o que está escrito. [/quote]

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

cara colocar um if…

assim…

[code]
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;

}[/code]

espero ter ajudado

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?

ola Anime

mas vc teria algum exemplo !

[code]

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);
[/code]

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...

}

desktop!!!

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…

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.

[code] 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);
  }

}[/code]

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.