Pessoal sei que tem diversos post a respeito, mas nao conseguir achar e está complicado aqui na empresa
estou pegando uma String e preciso trocar essa String para o formato correto ex
String a = “12-12-2011” eu preciso que fique assim String b = “2011-12-12”
Como posso fazer isso?
Qual a melhor maneira
Estou fazendo desse jeito mais está dando erro, alguém pode me ajudar por favor.
SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd" );
//Para converter de String para Date:
java.util.Date data = sdf.parse(dd);
//converter de Date para String
String data1 = sdf.format( data );
Como o SimpleDateFormat serve para converter tipos Date -> String ou String -> Date
no teu caso tu quer 2 string em formatos diferentes… já tentou ter dois sdf?
//o primeiro tem o padrao que será informado:SimpleDateFormatsdf=newSimpleDateFormat("dd-MM-yyyy");//Para converter de String para Date: java.util.Datedata=sdf.parse(dd);// o segundo o padrao que voce quer como saidaSimpleDateFormatsdfs=newSimpleDateFormat("yyyy-MM-dd");//converter de Date para String Stringdata1=sdf2.format(data);
alanbrasil1984
meu caro amigo, vc quer converter pra usar para exibir na web?
snowblacksoul
Pessoa ao converter a data esta vindo assim “Thu Dec 22 00:00:00 BRST 2011”
eu preciso da data desse forma =“2011-12-12”
Eu ja pego uma string que tem esse formato = “12-12-2011” eu preciso passar pra esse formato “2011-12-12”
MaYaRa_SaN o que tinha me passado eu já tinha feito, porém está aparecendo o formato “Thu Dec 22 00:00:00 BRST 2011”
alanbrasil1984 é desktop
diego.sas
Bom dia.
Tenta brincando de subString… rsrs
publicstaticStringformataData(StringdataOld)throwsException{StringBuilderdata=newStringBuilder();if((dataOld!=null)&&(!"".equals(dataOld))){if(dataOld.length()<10){thrownewException("Inválido o tamanho da data!");}data.append(dataOld.substring(6,dataOld.length()));data.append("/");data.append(dataOld.substring(3,5));data.append("/");data.append(dataOld.substring(0,2));}else{thrownewException("Data vazio!");}returndata.toString();}
Abraços
MaYaRa_SaN
é que tem um pequeno detalhe…
se voce quer converter de String pra Date, o padrão que voce passa no construtor é o formato que a string foi digitada…
se voce quer converter de Date para String, o padrão que voce passa no construtor é o formato que a data será formatada…
como voce está trabalhando com interface gráfica, voce pode usar o jformattedtextfield e atribuir a mascara no campo.
alanbrasil1984
tem n formas de fazer isso, te aconselho com milissegundos.
procura no google que vc achará o que eu to falando.
R
RenataTorres
Caso vc já tenha a data do formato String “dd-MM-yyyy” e só queira converter para String “yyyy-MM-dd”, tenta fazer da seguinte forma
Datedata=FormatToolKit.strToDate(dataStr,"dd-MM-yyyy");//converter a sua data String para DateStringdia=FormatToolKit.dateToStr(data,"dd-MM-yyyy").substring(0,2);Stringmes=FormatToolKit.dateToStr(data,"dd-MM-yyyy").substring(3,5);Stringano=FormatToolKit.dateToStr(data,"dd-MM-yyyy").substring(6,10);StringdataFormatada=ano+"-"+mes+"-"+dia;
pmlm
MaYaRa_SaN:
Como o SimpleDateFormat serve para converter tipos Date -> String ou String -> Date
no teu caso tu quer 2 string em formatos diferentes... já tentou ter dois sdf?
//o primeiro tem o padrao que será informado:SimpleDateFormatsdf=newSimpleDateFormat("dd-MM-yyyy");//Para converter de String para Date: java.util.Datedata=sdf.parse(dd);// o segundo o padrao que voce quer como saidaSimpleDateFormatsdfs=newSimpleDateFormat("yyyy-MM-dd");//converter de Date para String Stringdata1=sdf2.format(data);
A solução para o teu problema é esta.
Se não está a funcionar é porque estás a fazer algo errado. Aposto que é imprimir o objecto Date. O Date não tem formato e vai sempre mostrar no formato "Thu Dec 22 00:00:00 BRST 2011". Para mostrar no formato que queres deves usar a String respectiva.
snowblacksoul:
String a = "12-12-2011" eu preciso que fique assim String b = "2011-12-12"
Stringa="12-12-2011";SimpleDateFormatsdf=newSimpleDateFormat("dd-MM-yyyy");Datedata=sdf.parse(a);SimpleDateFormatsdfs=newSimpleDateFormat("yyyy-MM-dd");Stringb=sdf2.format(data);System.out.println(b);// vai imprimir 2011-12-12
quaresma
MaYaRa_SaN:
é que tem um pequeno detalhe…
se voce quer converter de String pra Date, o padrão que voce passa no construtor é o formato que a string foi digitada…
se voce quer converter de Date para String, o padrão que voce passa no construtor é o formato que a data será formatada…
como voce está trabalhando com interface gráfica, voce pode usar o jformattedtextfield e atribuir a mascara no campo.
;)
estava a alguns dias procurando referente a esse material, sua explicação é otima.
H
hallyssonChagas
pmlm:
MaYaRa_SaN:
Como o SimpleDateFormat serve para converter tipos Date -> String ou String -> Date
no teu caso tu quer 2 string em formatos diferentes... já tentou ter dois sdf?
//o primeiro tem o padrao que será informado:SimpleDateFormatsdf=newSimpleDateFormat("dd-MM-yyyy");//Para converter de String para Date: java.util.Datedata=sdf.parse(dd);// o segundo o padrao que voce quer como saidaSimpleDateFormatsdfs=newSimpleDateFormat("yyyy-MM-dd");//converter de Date para String Stringdata1=sdf2.format(data);
A solução para o teu problema é esta.
Se não está a funcionar é porque estás a fazer algo errado. Aposto que é imprimir o objecto Date. O Date não tem formato e vai sempre mostrar no formato "Thu Dec 22 00:00:00 BRST 2011". Para mostrar no formato que queres deves usar a String respectiva.
Stringa="12-12-2011";SimpleDateFormatsdf=newSimpleDateFormat("dd-MM-yyyy");Datedata=sdf.parse(a);SimpleDateFormatsdfs=newSimpleDateFormat("yyyy-MM-dd");Stringb=sdf2.format(data);System.out.println(b);// vai imprimir 2011-12-12
Era exatamente isso oq eu precisava!
Só loguei no site pra agradecer a todos pelas respostas principalmente à MaYaRa_SaN e ao pmlm que facilitou a minha compreensão
quando voltar eu posto o código que tava me causando erro de exceção
H
hallyssonChagas
meu problema era passar uma data obtida de um jformattedtextfield no formato ##/##/#### para o Banco de Dados
com o auxílio dos colegas, fiz as seguintes alterações (validação e retorno de mensagem para usuário será implementada mais tarde):
//receber data de um JFormattedTextField:StringdataString=Comp.JFTF_DataConsulta.getText();dataString=dataString.replaceAll("/","-");SimpleDateFormatsdf=newSimpleDateFormat("dd-MM-yyyy");//não permitir data inválida:sdf.setLenient(false);//instanciar objeto a partir da classe Date:java.util.DateDATA=null;//ou simplesmente Date DATA = null;try{//converter string para dateDATA=sdf.parse(dataString);}catch(ParseExceptionex){System.out.println("CATCH - Erro ao tentar converter string para data");Logger.getLogger(TelaAgendamento.class.getName()).log(Level.SEVERE,null,ex);}//obter milissegundos da variável DATA:DATA=newjava.sql.Date(DATA.getTime());//instância da classe PreparedStatement passando valores para inserção no banco:stmt.setDate(1,(java.sql.Date)DATA);