*jiriki*: Calendar-Objekt formatiert ausgeben

Beitrag lesen

Das Formatieren mit der SimpleDateFormat-Subclass funktioniert ja schon, nur gibt es anscheinend ein Problem bei der Umwandlung von Calendar in Date-Objekt.  Kleiner Beispielcode:

// Casting von Start- und Endzeit in Kalender-Typ
String starttime = "2003:10:28 00:00:00";
String endtime = "2003:10:28 16:20:26";

Calendar start = Calendar.getInstance();
start.set( Integer.parseInt( starttime.substring( 0, 4 ) ),
  Integer.parseInt( starttime.substring( 5, 7 ) ),
  Integer.parseInt( starttime.substring( 8, 10 ) ),
  Integer.parseInt( starttime.substring( 11, 13 ) ),
  Integer.parseInt( starttime.substring( 14, 16 ) ),
  Integer.parseInt( starttime.substring( 17, 19 ) ) );
Calendar end = Calendar.getInstance();
end.set( Integer.parseInt( endtime.substring( 0, 4 ) ),
  Integer.parseInt( endtime.substring( 5, 7 ) ),
  Integer.parseInt( endtime.substring( 8, 10 ) ),
  Integer.parseInt( endtime.substring( 11, 13 ) ),
  Integer.parseInt( endtime.substring( 14, 16 ) ),
  Integer.parseInt( endtime.substring( 17, 19 ) ) );

// Ermittlung der Spanne und Intervallsprünge zwischen Start- und Zielzeit; Anzahl der Sprünge ergibt sich aus Länge
// des Vectors empty; hier mal konstant auf 2 gesetzt.
long t1 = start.getTimeInMillis();
long t2 = end.getTimeInMillis();
long dist = t2 - t1;
long interval = Math.round( dist / ( 2 * 1000 ) );

// Hier werden mir die Millisekundenangaben t1:1069974000213, t2:1070032826213, interval:29413 zurückgegeben
System.out.println( t2+"\n"+t1+"\n"+interval );

// In tx wird nun die Startzeit abgelegt und ein Intervallsprung draufgerechnet, woraus sich dann die neue Zeit
// ergeben soll (die zwischen der Start- und Endzeit liegen soll!)
long tx = t1;
int x = empty.size()+i;

// Als neues Ergebnis für tx kommt raus 1069974029626 -> korrekt; der Taschenrechner gibts gleiche aus ;)
System.out.print ( tx+" + "+interval+" = " );
tx += interval;
System.out.println ( tx );

SimpleDateFormat formatter = new SimpleDateFormat("yyyy:MM:dd hh:mm:ss");
// Genau hier, bei der Rückwandlung der Millisekunden in Date spuckt er mir plötzlich ein Datum im November aus,
// was natürlich nicht zwischen 2003:10:28 00:00:00 und 2003:10:28 16:20:26 liegt, im Gegensatz zu den
// zugehörigen Millisekundenzeiten
Date getdate = new Date( tx );
String string = formatter.format( getdate );

Grüße, *jiriki*