Estoy tratando de convertir la marca de tiempo de milisegundos en XMLGregorianCalendar y viceversa, pero parece que estoy obteniendo resultados incorrectos. ¿Estoy haciendo algo mal? Parece que estoy ganando días.Largo a XMLGregorianCalendar y de regreso a Long
// Time stamp 01-Jan-0001 00:00:00.000
Long ts = -62135740800000L;
System.out.println(ts);
System.out.println(new Date(ts)); // Sat Jan 01 00:00:00 PST 1 .. Cool!
// to Gregorian Calendar
GregorianCalendar gc = new GregorianCalendar();
gc.setTimeInMillis(ts);
// to XML Gregorian Calendar
XMLGregorianCalendar xc = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
// back to GC
GregorianCalendar gc2 = xc.toGregorianCalendar();
// to Timestamp
Long newTs = gc2.getTimeInMillis();
System.out.println(newTs); // -62135568000000 .. uh?
System.out.println(new Date(newTs)); // Mon Jan 03 00:00:00 PST 1 .. where did the extra days come from?
Si agrego 'gc2.get (GregorianCalendar.YEAR);' entonces el día es correcto, pero ahora el AÑO está desactivado en 1969 años. –
Eso es extraño. ¡No veo eso! El día sigue siendo incorrecto y el año sigue siendo 1. Me pregunto si depende de la versión de Java (estoy usando 1.6.0_27) o la configuración regional (estoy 'en_GB') .. ??? – DNA