[RESOLVIDO]Tratamento de Data

15 respostas
M

Bom Dia Pessoal!!

Tenho uma classe que faz tratamento de data, ate ai tudo bem, mas quando eu clico no botao para gravar os dados no bd, ao inves de colocar a data “11/02/08” ele coloca “11/01/08”…

Ta sempre pegando um mes atraz, e quando é mes 1 ele pega mes 0 :shock:

import java.util.StringTokenizer;

public class TratamentoData
{
    public static String trataData(String dt)
   {
        if(dt != null)
       {
            StringTokenizer st = new StringTokenizer(dt, "-");
            String ano = st.nextToken();
            String mes = st.nextToken();
            String dia = st.nextToken();

            return dia+"/"+mes+"/"+ano;
        }
        else
            return "";
    }    
}

Oque poderia estar errado???

Obrigado pela Atenção

15 Respostas

P

é que em Java os meses começam no 0 (zero). janeiro == 0

espero ter ajudado

M

Tambem percebi isso, ate tentei somar +1 ao mes mas nao deu certo, se alguem tiver alguma solução agradeço!!!

Obrigado!!! :wink:

I

Micke:
Tambem percebi isso, ate tentei somar +1 ao mes mas nao deu certo, se alguem tiver alguma solução agradeço!!!

Obrigado!!! :wink:

deve ter algum jeito + certo de fazer isso…

mas acredito que isso funcione:

mes = String.valueOf(Integer.parseInt(mes)+1);
B

tche, se te ajudar

tem opcao para trabalhar date do sql e date do util com a classe calendar. blz

abraço

java.sql.Date dateDB = java.sql.Date.valueOf(“2008-02-11”);

Calendar cal = Calendar.getInstance();

cal.setTimeInMillis(dateDB.getTime());

F

Minha solução : não trate sua data, utilize um objeto java.util.Date ou java.sql.Date e guarde o valor em um campo DATE na base de dados, deixe a API java fazer isso por vc

M

Mas como que eu faria para o java.util.Date ou o java.sql.Date tratar isso para mim???

Desculpe a Burrice :smiley:

D

Hum… tente o SimpleDateFormat.

nome_campo.applyLocalizedPattern(“dd/MM/yyyy”);

B

assim como a colega delegada_ti escreveu

tb existe essa classe que trata datas formatadas

vc ira precisar estudar essas classes ou dizer mais detalhes sobre o que vc realmente quer

M

Tenha uma classe so para fazer tratamento de data…

Um JFrame que é minha tela principal que chama todas as outras JPanel’s, uma dessa JPanels faz um cadastro, e ao fazer esse cadastro automaticamente na JPanel é mostrado o dia e a hora que foi feito o mesmo!!!

Para que aconteça isso eu faço o seguinte:

1 - Na JPanel que faz o cadastro tem o seguinte método no botao:

private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt)
{
    GregorianCalendar gc = new GregorianCalendar();
    lblData.setText(gc.get(gc.DAY_OF_MONTH)+"/"+gc.get(gc.MONTH)+"/"+gc.get(gc.YEAR));

    Chamados chamado = new Chamados(gc.get(gc.YEAR)+"-"+gc.get(gc.MONTH)+"-"+gc.get(gc.DAY_OF_MONTH) //aki vai mais todos os outros get por parametro
}

2 - Depois isso e passado para uma classe que faz a inserção no banco de dados.

B
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); // esse formata e retorna uma string desta data 
      GregorianCalendar gc = new GregorianCalendar(); 
      Calendar cal = Calendar.getInstance(); // instancia um calendar com data e hora atual do sistema, eu sempre utilizo o calendar dificelmente utilizo gragoriancalendar
      System.out.println(sdf.format(cal.getTime())); // imprime a data formatada
      System.out.println(gc.get(gc.DAY_OF_MONTH)+"/"+gc.get(gc.MONTH)+"/"+gc.get(gc.YEAR));  
      java.sql.Date d = new java.sql.Date(cal.getTimeInMillis()); // gera uma data no formato SQL yyyy-mm-dd
      System.out.println(d.toString());

Chamados chamado = new Chamados(d.toString())
//Chamados chamado = new Chamados(gc.get(gc.YEAR)+"-"+gc.get(gc.MONTH)+"-"+gc.get(gc.DAY_OF_MONTH) //aki vai mais todos os outros get por parametro

abraço

M

Valeu pela ajuda pessoal e desculpa pelo transtorno que causei…

Obrigado e Abraços!!!

M

To eu de novo encomodando :frowning:

Agora esta dando o seguinte erro:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: ‘java.text.SimpleDateFormat@d936eac0’ for column ‘databertura’ at row 1

ja mudei o campo no bd para o tipo date!!!

L

Sobre esse erro apresentado…

http://www.guj.com.br/posts/list/37366.java

Abraços

M

Vlw pelo link me ajudou em outro problema que eu estava tendo em setar a textfild, mas o problema em conseguir gravar no BD ainda não deu certo…

continua dando o mesmo erro!!!

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: ‘java.text.SimpleDateFormat@d936eac0’ for column ‘databertura’ at row 1

M

Agradeço muito a ajuda de todos vocês, consegui arrumar, agora ta gravando no BD a data correta!!

Abraço a todos!!!

:smiley:

Criado 11 de fevereiro de 2008
Ultima resposta 11 de fev. de 2008
Respostas 15
Participantes 7