Avaliem o método

9 respostas
wilsontads

To fazendo um método que pega uma String no formato DD/MM/AAAA, converte e retorna do tipo
AAAA/MM/DD, pra inserir no banco de dados…
o que vcs acham?.
da pra ficar mais enchuto as linhas? rs

public void setBancoparaview(String bancoparaview)// Entrada: DD-MM-AAAA { bancoparaview = bancoparaview.replace("-", "") ; bancoparaview = bancoparaview.replace("/", "") ; bancoparaview = bancoparaview.replace(".", "") ; bancoparaview = bancoparaview.replace(" ", "") ; String dia="",mes="",ano="", retorno =""; ano=bancoparaview.substring(0,4); mes=bancoparaview.substring(4,6); dia=bancoparaview.substring(6,8); retorno = ano+" / "+mes+" / "+dia; this.bancoparaview = retorno; }

9 Respostas

pmlm

http://java.sun.com/javase/6/docs/api/java/text/SimpleDateFormat.html

ViniGodoy

Use o tipo String para texto.

Para outros tipos de dados, use o tipo apropriado. No caso de datas, o tipo Calendar.

wilsontads

Só correginduh ‘-’
o metodo que eu postei, é responsavel pela formatação da data, pra view…
o que eu gostaria que fosse analisado na verdade era esse aqui rs.
é o que eu vou pegar mascarado na view, e inserir no banco a data…

public void setViewparabanco(String viewparabanco) // Entrada: DD-MM-AAAA { viewparabanco = viewparabanco.replace("-", ""); viewparabanco = viewparabanco.replace("/", ""); viewparabanco = viewparabanco.replace(".", ""); viewparabanco = viewparabanco.replace(" ", ""); String dia="",mes="",ano="", retorno =""; dia = viewparabanco.substring(0,2); mes = viewparabanco.substring(2,4); ano = viewparabanco.substring(4,8); retorno = ano+mes+dia; this.viewparabanco = retorno; }

ViniGodoy

Analisando esse método, continuo afirmando que ele está errado. Por que está recebendo um string e enviando para o banco uma string.
O banco é capaz de trabalhar com o tipo de data, então, use o tipo de data.

Isso permite até que você troque o tipo do banco, sem ter que alterar a string de formatação do SQL do banco.

wilsontads

Se diz, mudar o método pra do tipo Date…
pra nao precisar converter o retorno quando for chama-lo?

ViniGodoy

Sim. O único lugar que o Date vira um String é na view. E é na view também que esse String volta a ser um date, antes de ser repassado para as camadas inferiores (alguns mais ortodoxos podem alegar que é no controller que a string passa a ser um date. O importante é, ele será um date antes mesmo de cair para o seu model).

wilsontads

Entendi…
valeu ^^

WellingtonRamos

wilsontads:
To fazendo um método que pega uma String no formato DD/MM/AAAA, converte e retorna do tipo
AAAA/MM/DD, pra inserir no banco de dados…
o que vcs acham?.
da pra ficar mais enchuto as linhas? rs

Bem, se você está dizendo que o parâmetro de entrada é no formato DD/MM/AAAA, pq está fazendo replace em mais de um separador ("-", “.”, " ")?

Para deixar “mais enxuto” o código em si, poderia fazer:

//Como replace retorna Stirng, concatenaria as chamadas
        bancoparaview = bancoparaview.replace("-", "") .replace("/", "") .replace(".", "") .replace(" ", "") ;

Mas preferiria utilizar Split
Obtendo um array de String.
Outra possibilidade seria fazer os substrings considerando os separadores

String dia = dataStr.substring(0, 2);
    	String mes = dataStr.substring(3, 5);
    	String ano = dataStr.substring(6);

Aliás, parece-me que seus substrings tão pegando dados invertidos p/ dia, mes e ano, baseando-se na entrada que você disse que receberia…

wilsontads:
ano=bancoparaview.substring(0,4); mes=bancoparaview.substring(4,6); dia=bancoparaview.substring(6,8);

E, por fim, converta tudo para data (como já foi dito).

WellingtonRamos

Mantenho a resposta que postei acima…

Se preferir, converta para GregorianCalendar e use SimpleDateFormat para formatar usando a máscara desejada (“yyyyMMdd”).

Apenas lembrando que, ao fornecer o mês ao Calendar, subtrair 1.
Janeiro = 0
Fevereiro = 1
Março = 2

Dezembro = 11

Exemplo:

String dataStr = "11/11/2010"; String[] str = dataStr.split("/"); Calendar c = new GregorianCalendar(Integer.parseInt(str[2]), Integer.parseInt(str[1])-1, Integer.parseInt(str[0])); String retorno = new SimpleDateFormat("yyyyMMdd").format(c.getTime()); System.out.println(retorno);
Ou

String dataStr = "11/11/2010"; String dia = dataStr.substring(0, 2); String mes = dataStr.substring(3, 5); String ano = dataStr.substring(6); String retorno = ano + mes + dia; // ou dataStr.substring(6) + dataStr.substring(3, 5) + dataStr.substring(0, 2) desconsiderando as atribuições acima. System.out.println(retorno);

Estou baseando-me na premissa que você mesmo pôs: DD/MM/AAAA

Criado 30 de março de 2010
Ultima resposta 30 de mar. de 2010
Respostas 9
Participantes 4