ミリ秒のタイムスタンプをXMLGregorianCalendarに変換しようとしていますが、間違った結果が出ているようです。私は何か間違っているのですか?私は日々を得ているようだ。Long to XMLGregorianCalendarと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?
'gc2.get(GregorianCalendar.YEAR);を追加すると、その日は正しいが、今年の年は1969年だけオフになる。 –
それは奇妙です - 私はそれを見ません!日は間違っていて、年はまだ1です。Javaのバージョン(1.6.0_27を使用しています)またはロケール(私は 'en_GB')のバージョンに依存しているのでしょうか? – DNA