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.
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.
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.
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.