Problema com data e hora em J2ME

Bom dia pessoal do GUJ

Tenho o seguinte código para pegar a data e hora do sistema:

Date sysdate = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(sysdate);
String dia = String.valueOf(cal.get(Calendar.DAY_OF_MONTH));
String mes = String.valueOf(cal.get(Calendar.MONTH)+1);
String ano = String.valueOf(cal.get(Calendar.YEAR));
String horas = String.valueOf(cal.get(Calendar.HOUR_OF_DAY));
String minutos = String.valueOf(cal.get(Calendar.MINUTE));

Mas quando jogo o resultado em um StringItem, está acrescentado 3 horas.

Por exemplo agora é 08/10/2008 11:36, mas o resultado que aperece é 08/10/2008 14:36

Alguém já passou por isso ou sabe onde está o problema?

Abraços

Paulo Sampaio

Paulo,

Seguinte:

	Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT-3:00"));

Outra coisa não precisa instanciar um new Date() na linha 1, e depois setar em “cal” na linha 3, pois quando você dar um “getInstance” no calendar, ele já pega a data atual.

calendar= Calendar.getInstance();
calendar.setTime(nascimento.getDate());
resultado=new Form("Resultado");
resultado.append(new StringItem(null,nome.getString()));
resultado.append(new StringItem(null,"\n"));
resultado.append(new StringItem(null,email.getString()));
resultado.append(new StringItem(null,"\n"));
resultado.append(new StringItem(null,fone.getString()));
resultado.append(new StringItem(null,"\n"));
resultado.append(new StringItem(null,calendar.get(Calendar.DAY_OF_MONTH)+"/"+calendar.get(Calendar.MONTH)+1)+"/"+calendar.get(Calendar.YEAR)));
resultado.addCommand(ant);
resultado.addCommand(sair);
resultado.setCommandListener(this);
display.setCurrent(resultado);

sendo que esse campo nascimento é um DataField

:wink: aqui funciona perfeitamente…

Obrigado Julio, funcionou perfeitamente.

O problema deveria ser porque o timezone da KVM estava para o fuso central GMT, que é adiantado 3 horas do fuso oficial de Brasília.

Verifica as configurações do emulador, ou do celular, mas se você fizer do jeito que mostrei, nunca vai ter stress, mesmo se o fuso da KVM estiver no fuso horário de Krypton.

[quote=xjcd]Paulo,

Seguinte:

	Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT-3:00"));

Outra coisa não precisa instanciar um new Date() na linha 1, e depois setar em “cal” na linha 3, pois quando você dar um “getInstance” no calendar, ele já pega a data atual.[/quote]

Aviso aos navegantes: Pode ter funcionado neste celular, mas não vai funcionar em todos, por justamente esta sintaxe do GMT não ser algo obrigatório nos celulares. Vc até pode requisitar o GMT-3:00, mas isto não significa que irá ser atendido.Já passei por isto e para quem ainda duvida, olhe com mais cuidado no javadoc do Timezone.