Duvidas com Herança

3 respostas
A

Boa Noite a todos,

Estou desenvolvendo um sistema de agenda para o meu tio. Para nao ter que reescrever codigo ja existente eu pesquisei um a forma de consiste Datas que e a que se encontra abaixo:

try
                {   
                  
                   String data = dataeditor.getText();
                   GregorianCalendar gc = new GregorianCalendar();
                   SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
                   format.setLenient(false);
                   gc.setLenient(false);
                   gc.setTime(format.parse(data));
                   
                }
                catch(ParseException d)
                 {
                     JOptionPane.showMessageDialog(null, d);
                     JOptionPane.showMessageDialog(null, "Data inválida ou fora do formato dd/mm/yyyy");
                     dataeditor.requestFocus();
                 }

Funciona blz mas para nao ter que ficar repetindo esse codigo resolvi criar uma classe que extend GregorianCalendar e introduzi nela simpledateformat como atributo da classe.

public class Data extends GregorianCalendar{
    
   private SimpleDateFormat format;
   
    
    public Data(String datavalue)
      throws ParseException
    {
        
        super();
        format = new SimpleDateFormat("dd/mm/yyy");
        format.setLenient(false);
        setLenient(false);
        setTime(format.parse(datavalue));
        
    }
    
 }

O primeiro codigo funciona blz, consiste a data e que e uma maravilha, mas, o segundo codigo aceita a data 31/04/2011 como se fosse válida, porque ? se os códigos fazem relativamente a mesma coisa ?

3 Respostas

F

Olá Asphael!!!

A classe SimpleDateFormat como você já deve saber exige que você passe um pattern ao construtor. No primeiro código que você postou está correto o pattern informado e ele está atendendo ao que você deseja. Porém, o segundo código não está de acordo com o que você deseja pois o pattern informado está INCORRETO. O “mm” é diferente de “MM”. O pattern “mm” representa os minutos e o “MM” representa o mês. Troque o “mm” por “MM” que seu código funcionará corretamente. Dê uma olhada na API para que isto fique mais claro, pois há diversos patterns: http://download.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html

A

Muito Obrigado resolveu certinho.

Diguinho.Max

Galera como descritas na regras do forum se ja foi resolvido por favor fechem os post.
assim evita da gnt entrar em post ja resolvidos.

Criado 16 de outubro de 2011
Ultima resposta 24 de out. de 2011
Respostas 3
Participantes 3