Formatar data

Olá galera… Estou estudando J2ME
No RMS, para gravar data estou utilizando String, pois nao achei um writeDate.
Então qdo uso :

ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeUTF(meuObjeto.getData().ToString);

Ele grava “Web Feb 06 00:00:00 GMT-03:00 2008”.
Eu gostaria que gravasse 06/02/2008.
Eu utilizer o “Formatter” mas só funcionou no emulador do wtk, no meu cel nao funcionou (Sony Ericsson W200i)
Existe outro jeito de formatar data e numero sem ser o Formatter?
Ou existe um jeito de utilizar o Formatter no meu cel?

Desde já fico grato

Olá cleriston
Tenta usar o dateformat, passando a máscara… depois você parsear

blz… flws
espero ter ajudado

desculpe se for muito idiota a pergunta, mas pelo q vi aqui meu cel nao tem suporte mesmo a jsr 238… Tem como instalar isso no meu cel?

Não existe jeito para instalar qualquer JSR. Ou ela vem de fábrica ou nada feito.

Quanto a formatação, vc pode gravar ela como um long usando writeLong(date.getTime() ou System.currentTimemillis()) que funfa.

Para gravar formatado, vc vai ter que usar a classe Calendar, usando como parãmetro de alimentação o teu Date.

Depois é só usar o método get, especificando o que vc quer que a classe retorne (dia, mes ou ano) e formatar isto adequadamente usando um StringBuffer.

sem querer abusar, mas jah abusando, como faço para formatar o valor com 2 casas ?

[quote=cleriston]sem querer abusar, mas jah abusando, como faço para formatar o valor com 2 casas ?

[/quote]

valorFormatado = "";
valor = 2;

if (valor > 9) {
   valorFormatado ="0";
}

valorFormatado = valorFormatado + valor;

Explicação, se o valor é menor que 10, é necessário você adicionar um "0" (zero) na frente, senão não precisa.
Este código é bem tosco mesmo, apenas para lhe dar uma idéia.

Faça ele direitinho como te expliquei, usando o StringBuffer e diversas chamadas de append.

Deu certinho :smiley:
O q eu fiz para o número tah meio tosco, falta arredondar e melhorar o código
segue abaixo

[code]
import java.util.Calendar;
import java.util.Date;

public class DataString {
Date data;

public DataString(Date data) {
	super();
	this.data = data;
}

public String getData(){		
	
	StringBuffer dtFormatada = new StringBuffer();
	Calendar cld = Calendar.getInstance();
	cld.setTime(data);
	dtFormatada.append(getString(cld.get(Calendar.DAY_OF_MONTH)));
	dtFormatada.append("/");
	dtFormatada.append(getString(cld.get(Calendar.MONTH)+1));
	dtFormatada.append("/");
	dtFormatada.append(getString(cld.get(Calendar.YEAR)));				
	
	return dtFormatada.toString();		
	
}

private String getString(int inteiro){
	String texto = String.valueOf(inteiro);
	if (texto.length() == 1){
		texto = "0".concat(texto);
	}		
	return texto;
}

}[/code]

[code]
public class NumeroString {
private double numero;

public NumeroString(double numero) {
	super();
	this.numero = numero;
}

public String getNumero() {
	String snumero = String.valueOf(numero);
	StringBuffer sbnumero = new StringBuffer(snumero.substring(0, snumero
			.indexOf(".")));
	if (snumero.length() >= snumero.indexOf(".") + 1) {
		sbnumero.append(snumero.substring(snumero.indexOf("."), snumero
				.indexOf(".") + 1));
	}
	if (snumero.length() >= snumero.indexOf(".") + 2) {
		sbnumero.append(snumero.substring(snumero.indexOf(".")+1, snumero
				.indexOf(".") + 2));
	}
	if (snumero.length() >= snumero.indexOf(".") + 3) {
		sbnumero.append(snumero.substring(snumero.indexOf(".")+2, snumero
				.indexOf(".") + 3));
	}
	return sbnumero.toString();
}

}[/code]

[quote=cleriston]Deu certinho :smiley:
O q eu fiz para o número tah meio tosco, falta arredondar e melhorar o código
segue abaixo

[code]
import java.util.Calendar;
import java.util.Date;

public class DataString {
Date data;

public DataString(Date data) {
	super();
	this.data = data;
}

public String getData(){		
	
	StringBuffer dtFormatada = new StringBuffer();
	Calendar cld = Calendar.getInstance();
	cld.setTime(data);
	dtFormatada.append(getString(cld.get(Calendar.DAY_OF_MONTH)));
	dtFormatada.append("/");
	dtFormatada.append(getString(cld.get(Calendar.MONTH)+1));
	dtFormatada.append("/");
	dtFormatada.append(getString(cld.get(Calendar.YEAR)));				
	
	return dtFormatada.toString();		
	
}

private String getString(int inteiro){
	String texto = String.valueOf(inteiro);
	if (texto.length() == 1){
		texto = "0".concat(texto);
	}		
	return texto;
}

}[/code]

[code]
public class NumeroString {
private double numero;

public NumeroString(double numero) {
	super();
	this.numero = numero;
}

public String getNumero() {
	String snumero = String.valueOf(numero);
	StringBuffer sbnumero = new StringBuffer(snumero.substring(0, snumero
			.indexOf(".")));
	if (snumero.length() >= snumero.indexOf(".") + 1) {
		sbnumero.append(snumero.substring(snumero.indexOf("."), snumero
				.indexOf(".") + 1));
	}
	if (snumero.length() >= snumero.indexOf(".") + 2) {
		sbnumero.append(snumero.substring(snumero.indexOf(".")+1, snumero
				.indexOf(".") + 2));
	}
	if (snumero.length() >= snumero.indexOf(".") + 3) {
		sbnumero.append(snumero.substring(snumero.indexOf(".")+2, snumero
				.indexOf(".") + 3));
	}
	return sbnumero.toString();
}

}[/code][/quote]

Muito bem…é isto aí…

Como melhoria, reduzindo o número de Strings criadas…

		StringBuffer dtFormatada = new StringBuffer();
		Calendar cld = Calendar.getInstance();
		cld.setTime(data);
                  final int dia = cld.get(Calendar.DAY_OF_MONTH);
                  if (dia < 10) {
                     dtFormatada.append('0');
                  }
                  dtFormatada.append(dia);
                  ...
                 e assim por diante...
		
		return dtFormatada.toString();