Converter String em Date.... Estranho!

12 respostas
D

Alguem sabe me dizer porque isto:

SimpleDateFormat ft = new SimpleDateFormat("ddMMyyyy");
               Date data =ft.parse(chamada.getDataInicial());
               ft.setLenient(false);
               System.out.println("Proxima data: " + data);

Retorna isto:

Proxima data: Thu Nov 06 00:00:00 GMT 2008

E não isto:

03112008

Estou utilizando o NetBeans 6.5, algo a ver???

12 Respostas

letakeda

Tente assim… check também se o chamada.getDataInicial() ta retornando realmente o que deveria… está?

String pattern = "MM/dd/yyyy";
    SimpleDateFormat format = new SimpleDateFormat(pattern);
    try {
      Date date = format.parse("12/31/2006");
      System.out.println(date);
   }

Abraços,

F

Aqui esta funcionando corretamente

import java.util.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class Teste {

	public static void main(String[] args) throws ParseException {
		SimpleDateFormat ft = new SimpleDateFormat("ddMMyyyy");
		Date data = ft.parse("03112008");
		ft.setLenient(false);
		System.out.println("Proxima data: " + data);
	}

}

Sai
Proxima data: Mon Nov 03 00:00:00 BRST 2008

V

Voce deve usar format para a data sair da maneira q vc quer

SimpleDateFormat ft = new SimpleDateFormat("ddMMyyyy");   
               Date data =ft.parse(chamada.getDataInicial());   
               ft.setLenient(false);   
               System.out.println("Proxima data: " + ft.format(data));
D

Não deu certo pessoal…

O método format retorna uma string, e a minha variavel data foi declarada como Date.
Tentei colocar tb “12/31/2006”, neste formato mas tb não deu certo, e o chamada.getDataInicial(), esta retornado o que deveria uma String"03112008 ", só qua apos a conversão

continua saindo isto:

Proxima data: Thu Nov 06 00:00:00 GMT 2008

B

Se ainda está com a mesma saída depois do código acima, limpe o projeto e recompile o código.

V

Sempre se voce colar um tipo Date para imprimir o resultado será:
Proxima data: Thu Nov 06 00:00:00 GMT 2008

o SimpleDateFormat eh para retornar o formato que vc especificou em string, utilizando o metodo format.

K

uso assim: ai vc define do jeito q quer.

public static void horasData(JLabel data, JLabel hora){

String diaSemana[] = {domingo, segunda-feira, terça-feira, quarta-feira,

quinta-feira, sexta-feira,sábado};

String meses[] = {janeiro,fevereiro,março, abril, maio, junho,

julho,agosto, setembro, outubro, novembro, dezembro};
Calendar agora = Calendar.getInstance();
		int ho = agora.get(Calendar.HOUR_OF_DAY);
		int mi = agora.get(Calendar.MINUTE);
		int se = agora.get(Calendar.SECOND);
		
		int ds = agora.get(Calendar.DAY_OF_WEEK);
		int dia = agora.get(Calendar.DAY_OF_MONTH);
		int mes = agora.get(Calendar.MONTH);
		int ano = agora.get(Calendar.YEAR);
		
		hora.setText(formatar(ho % 24)+ ":" + formatar(mi)+ ":" + formatar(se)+ "");
		data.setText(diaSemana[ds - 1] + ", "+formatar(dia)+" de "+meses[mes]+ " de "+ ano+ "");		
	
	}

	public static String formatar(int num){
		   DecimalFormat df = new DecimalFormat("00");
		   
		   return df.format(num);
	}

ou uso assim

public static void dataatual(JTextField hora){

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

hora.setText(sdf.format(new Date()));

}

espero ter ajudado.

G

Pelo menos comigo deu certo

import java.util.Date;

import java.text.ParseException;

import java.text.SimpleDateFormat;
public class Teste

{

public static void main(String[ ] args) throws ParseException

{

Date data = new SimpleDateFormat(dd/MM/yyyy).parse(03/11/2008);
String dt = new SimpleDateFormat("dd/MM/yyyy").format(data);		

	System.out.println( data);
	System.out.println("Data formatada   " + dt);

}

}

D

Bom dia Pessoal.

Obrigado pela ajuda, problema resolvido.
Só mais uma dúvida, vcs sabem me dizer se a classe Date, ou a classe Calendar, possuem algum método que consiga pegar o próximo dia.
Algo como um next Date?

G

cara a classe Date esta depreciada mais essa eh a unica forma que eu achei de tentar te ajudar, a classe Date retorna a data em milissegundos entao com aquele calculo de um dia eu consigo acrecentar um dia na data que vc pegou de uma string e converteu

import java.util.Date;

import java.text.ParseException;

import java.text.SimpleDateFormat;
public class Data

{

public static void main(String[ ] args) throws ParseException

{	

Date data = new SimpleDateFormat(dd/MM/yyyy).parse(03/11/2008);
String dt = new SimpleDateFormat("dd/MM/yyyy").format(data); 

	long incrementador = data.getTime();

	int dia = 1000 * 60 * 60 * 24; 
	incrementador = incrementador + dia;
	data.setTime(incrementador);
	dt = new SimpleDateFormat("dd/MM/yyyy").format(data);
	
	System.out.println(dt);
}

}

D

Esta ótimo, Gerson…
Brigadão.

V

Com a classe Calendar vc consegue acrescentar um dia, mes, ano, oq vc quiser, sem precisar fazer qualquer calculo.

Criado 28 de novembro de 2008
Ultima resposta 1 de dez. de 2008
Respostas 12
Participantes 7