Não estou conseguindo usar o metodo before()[Com problemas de novo]

Não sei o que está havendo já usei o metodo antes e funcionou legal, mas simplesmente não esta funcionando agora!

meu codigo!

           Date agora = new Date();

           GregorianCalendar dataOrigem = null;
           dataOrigem = new GregorianCalendar(Integer.parseInt(txtDataOrigem.getText().substring(0, 1)),
                   Integer.parseInt(txtDataOrigem.getText().substring(2, 3)),
                   Integer.parseInt(txtDataOrigem.getText().substring(4, 7)));
           
           if(dataOrigem.before(agora)){
              JOptionPane.showMessageDialog(rootPane, "Data inválida");
           }
           else{
               Pessoa pessoa = new Pessoa(nome, endereco, fone, email, cpf, bairro, cidade, uf, dataOrigem);

o sistema não está validando as datas!

Use a classe SimpleDateFormat para passar de String para Date

http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html

Mas se tá passando é porque alguma coisa tá fazendo com que o before retorne false…

Agora esta estourando a ParseException:

[code]
SimpleDateFormat formatoData = new SimpleDateFormat();
Date dataOrigem = null;
Date agora = new Date();

       try {
           dataOrigem = formatoData.parse(txtDataOrigem.getText());
       } catch (ParseException ex) {
           ex.printStackTrace();
       }
       
       if(dataOrigem.before(agora)){
          JOptionPane.showMessageDialog(rootPane, "Data inválida");
       }
       else{
           Pessoa pessoa = new Pessoa(nome, endereco, fone, email, cpf, bairro, cidade, uf, dataOrigem);[/code]

agora q vi q apareceu uma npe de brinde! :?

[code]

java.text.ParseException: Unparseable date: “21/12/2010”
at java.text.DateFormat.parse(DateFormat.java:337)
at Interface.JanelaAdicionarNovo.btnAdicionarActionPerformed(JanelaAdicionarNovo.java:296)
at Interface.JanelaAdicionarNovo.access$100(JanelaAdicionarNovo.java:11)
at Interface.JanelaAdicionarNovo$2.actionPerformed(JanelaAdicionarNovo.java:94)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at Interface.JanelaAdicionarNovo.btnAdicionarActionPerformed(JanelaAdicionarNovo.java:302)
at Interface.JanelaAdicionarNovo.access$100(JanelaAdicionarNovo.java:11)
at Interface.JanelaAdicionarNovo$2.actionPerformed(JanelaAdicionarNovo.java:94)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)[/code]

Usa assim

new SimpleDateFormat("dd/MM/yyyy");  

Continuou lançando a excessão!! :? :? :?

O do unparsable date??

Que coisa…

Posta o código pra ver como ficou

ok

Esse é o evento que adiciona uma pessoa na lista eu valido a data la dentro!

private void btnAdicionarActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if(txtNome.getText().trim().equalsIgnoreCase("")){
            JOptionPane.showMessageDialog(rootPane, "O campo nome deve ser preenchido");
        }
        else if(txtEmailGeral.getText().trim().equalsIgnoreCase("")){
            JOptionPane.showMessageDialog(rootPane, "O e-mail geral nome deve ser preenchido");
        }
        else if(txtEndereco.getText().trim().equalsIgnoreCase("")){
            JOptionPane.showMessageDialog(rootPane, "O campo endereço deve ser preenchido");
        }
        else if(txtBairro.getText().trim().equalsIgnoreCase("")){
            JOptionPane.showMessageDialog(rootPane, "O campo bairro deve ser preenchido");
        }
        else if(txtCidade.getText().trim().equalsIgnoreCase("")){
            JOptionPane.showMessageDialog(rootPane, "O campo cidade deve ser preenchido");
        }
        else if(txtUF.getText().trim().length() < 2){
            JOptionPane.showMessageDialog(rootPane, "O campo UF deve ser preenchido completamente");
        }
        else if(txtTelefone.getText().trim().equalsIgnoreCase("")){
            JOptionPane.showMessageDialog(rootPane, "O campo telefone deve ser preenchido");
        }
        else if(txtCpf.getText().trim().length() < 11){
            JOptionPane.showMessageDialog(rootPane, "O campo CPF deve ser preenchido completamente");
        }
        else if(txtDataOrigem.getText().trim().length() < 8){
            JOptionPane.showMessageDialog(rootPane, "O campo Data de Nascimento / Fundação deve ser preenchido completamente");
        }
        else{
           String nome = txtNome.getText();
           String email = txtEmailGeral.getText();
           String fone = txtCidade.getText();
           String endereco = txtEndereco.getText();
           String bairro = txtBairro.getText();
           String cidade = txtTelefone.getText();
           String uf = txtUF.getText();
           String cpf = txtCpf.getText();

           SimpleDateFormat formatoData = new SimpleDateFormat("dd/mm/aaaa");
           Date dataOrigem = null;
           Date agora = new Date();

           try {
               dataOrigem = formatoData.parse(txtDataOrigem.getText());
           } catch (ParseException ex) {
               ex.printStackTrace();
           }
           
           if(dataOrigem.before(agora)){
              JOptionPane.showMessageDialog(rootPane, "Data inválida");
           }
           else{
               Pessoa pessoa = new Pessoa(nome, endereco, fone, email, cpf, bairro, cidade, uf, dataOrigem);

               pessoa.setApelido(txtApelido.getText());
               pessoa.setCep(txtCep.getText());
               pessoa.setHomepage(txtHomePage.getText());
               pessoa.setFax(txtFax.getText());

               cadastroDePessoas.adiciona(pessoa);
               JOptionPane.showMessageDialog(null, "Individuo adicionado com sucesso","Parabéns", JOptionPane.INFORMATION_MESSAGE);
               this.dispose();
           }
        }
    }

Cara … vc colocou diferente

Nao é new SimpleDateFormat(“dd/mm/aaaa”);

É new SimpleDateFormat("[color=red]dd/MM/yyyy[/color]");

(e é case sensitive)

[quote=rogelgarcia]Cara … vc colocou diferente

Nao é new SimpleDateFormat(“dd/mm/aaaa”);

É new SimpleDateFormat("[color=red]dd/MM/yyyy[/color]");

(e é case sensitive)[/quote]

Mas ateh nas Strings

Não tinha testado direto, funcionou legal!

Brigadão pela ajuda mesmo sendo meio tosca a duvida! :wink:

Tranquilo… até mais!!

O negócio da String é porque aquela String define o padrão da data que vc quer… então tem que ser igualzinho eu postei… cada letra é uma coisa

MM significa mes usando duas casas

se vc coloca

mm siguinitica minutos usando duas casas…

Olha o link que te passei que lá tem todos os simbolos que podem ser usados…

Eu dei uma olhada na API, mas é muita baitolisse do JAVA devia ter algum metodo mais facil de se fazer isso, ora ter que chamar outra classe para trocar o tipo do dado!

Comentário:

Existem os metodos after() e before() não seria a mesma coisa se soh existisse um?

Haahahha… essas baitolices é para dar poder ao programador… mas precisa saber usar…

Existe o after e o before… para poder facilitar…

De qualquer jeito… after nao é o contrário de before :lol:

Pode ateh dar poder ao programador, mas fica parecendo gambiarra, com akelas Strings no meio!

não gosto dessas Datas em JAVA!

A String é o formato… né gambiarra nao :smiley:

Formatos são dados em Strings…

Tem umas outras formas de usar formatos pre montados aí vc nao precisa usar a String… mas fica de pesquisa pra vc… :wink:

Axei mais um errinho, qdo eu não passo o formato certo ele lança uma npe, obvio, pq nada vai ser passado, o que eu deveria fazer pra conserar isso?

O NullPointer nao foi pelo formato inválido… e sim porque nao gerou nenhuma data…

aí a data fica nula… e dá nullpointer…

Ao invés de dar e.printStackTrace… vc dá throw new RuntimeException(“Nao foi possivel converter a data”);

Olha como eu fiz, mas continuo estourando a npe!

SimpleDateFormat formatoData = new SimpleDateFormat("dd/MM/yyyy");
           Date dataOrigem = null;
           Date agora = new Date();

           try {
               dataOrigem = formatoData.parse(txtDataOrigem.getText());
           }
           catch (ParseException ex) {
               JOptionPane.showMessageDialog(rootPane, "Formato da data incorreto", "Erro", JOptionPane.ERROR_MESSAGE);
           }
           catch (NullPointerException npe) {
               throw new RuntimeException("Campo em Branco");
           }

           if(dataOrigem.after(agora)){
              JOptionPane.showMessageDialog(rootPane, "Data inválida");
           }
           else{
               Pessoa pessoa = new Pessoa(nome, endereco, fone, email, cpf, bairro, cidade, uf, dataOrigem);

               pessoa.setApelido(txtApelido.getText());
               pessoa.setCep(txtCep.getText());
               pessoa.setHomepage(txtHomePage.getText());
               pessoa.setFax(txtFax.getText());

               cadastroDePessoas.adiciona(pessoa);
               JOptionPane.showMessageDialog(null, "Individuo adicionado com sucesso","Parabéns", JOptionPane.INFORMATION_MESSAGE);
               this.dispose();