Problemas com data

Estou utilizando o código abaixo para tranformar uma data, porem esta me apresentando problemas.

Ex: se eu tiver a data de hoje ele esta me convertendo para “3611-06-23” e o correto seria “2011-06-23”. O que pode estar errado??

import java.util.Date;
import java.util.TimeZone;

public class Util {

    /**
     * Converte o formato OLE de data representado por um Double para o tipo java.util.Date
     */
    public static Date doubleToDate(double value) throws Exception {
        if ((value >= 2958466.0) || (value <= -657435.0)) {
            throw new Exception("Arg_OleAutDateInvalid");
        }

        long num = (long) ((value * 86400000.0) + ((value >= 0.0) ? 0.5 : -0.5));
        if (num < 0L) {
            num -= (num % 0x5265c00L) * 2L;
        }

        num += 0x3680b5e1fc00L;
        if ((num < 0L) || (num >= 0x11efae44cb400L)) {
            throw new Exception("Arg_OleAutDateScale");
        }

        long ticks = (num * 0x2710L);

        final long DIFF_IN_MILLIS = 11644473600000L;
        long javaTime = (ticks / 10000) - DIFF_IN_MILLIS;

        TimeZone timeZone = TimeZone.getDefault();
        javaTime -= timeZone.getOffset(javaTime);

        Date date = new Date(javaTime);
        return date;
    }
}

Oi,

O campo data precisa mesmo ser double…


 Calendar data = Calendar.getInstance();   
                   
 SimpleDateFormat format=new SimpleDateFormat("dd/MM/yyyy");
 String h=format.format(data.getTime());
         

Sim, este código é utilizado no retorno de uma data pega na impressora fiscal.

Qual a marca da impressora, não tem um manual de ajuda…

Encontrei isso, talvez ajude…

http://support.microsoft.com/kb/169795/pt

http://www.koders.com/java/fid837E1A6538B89AD9929830A316EADB0E9F479C2D.aspx

Este codigo que coloquei faz parte de uma biblioteca que estou utilizando para fazer o processo de comunicação com a impressora. Na verdade eu gostaria de entender melhor este código para tentar sanar o problema. Estou utilizando um emulador da Sweda.