LinuxUser03
Grünschnabel
Hallo an die Gemeinde,
ich bastel im Moment an einem Programm um Messdierpläne automatisch zu erstellen. Dabei erstelle ich in einer Klasse Zeitraum für ein übergebenes (Gregorian)Calendarobjekt, das den Anfangs-Zeitpunkt bestimmt, und eins das den End-Zeitpunkt bestimmt eine Arraylist von Messe-Objekten. Jedes Messeobjekt hat als Eigenschaften ein Calendarobjekt, das den Tag, mit Uhrzeit enthält und einen int in der die benötigte Anzahl an Messdienern bestimmt wird.
Nun will ich es ermöglichen eine Messe zu löschen, weil immer wieder mal Messen ausfallen. Dabei übergebe ich ein Cal. Objekt, mit dem Zeitpunkt, und überprüfe ob das in der Arraylist von Zeitraum drin ist, dann löschen.. nur leider sind die Objekte nie gleich. Wenn ich mir die toString ausgaben von einem Messe-CalendarObjekt, und die des für den Vergleich gebauten ansehe, erkenne ich immer wieder Unterschiede bei "Day_Of_Week", "Day_Of_Week_In_Month usw.
Hier einmal der Codeschnipsel, wo ich das vergleichsobjekt baue:
Ich hole mir den String aus der Anzeigetabelle, (Die Selektierte Zeile) und will den wieder als Calendar objekt zusammenbauen.
Das übergebe ich dann an die vergleichsmethode von der Zeitraum-Klasse:
Eine Beispielausgabe, villeicht ist das hilfreich:
das Zusammenbauen habe ich auch schonmal mit einem DateFormat versucht, so:
Aber auch das geht nicht.
Das wahr jetzt viel Text, ich hoffe mein Problem ist klar geworden.
Villeicht hat jemand von euch eine Idee?
Danke, Lg LinuxUser03
ich bastel im Moment an einem Programm um Messdierpläne automatisch zu erstellen. Dabei erstelle ich in einer Klasse Zeitraum für ein übergebenes (Gregorian)Calendarobjekt, das den Anfangs-Zeitpunkt bestimmt, und eins das den End-Zeitpunkt bestimmt eine Arraylist von Messe-Objekten. Jedes Messeobjekt hat als Eigenschaften ein Calendarobjekt, das den Tag, mit Uhrzeit enthält und einen int in der die benötigte Anzahl an Messdienern bestimmt wird.
Nun will ich es ermöglichen eine Messe zu löschen, weil immer wieder mal Messen ausfallen. Dabei übergebe ich ein Cal. Objekt, mit dem Zeitpunkt, und überprüfe ob das in der Arraylist von Zeitraum drin ist, dann löschen.. nur leider sind die Objekte nie gleich. Wenn ich mir die toString ausgaben von einem Messe-CalendarObjekt, und die des für den Vergleich gebauten ansehe, erkenne ich immer wieder Unterschiede bei "Day_Of_Week", "Day_Of_Week_In_Month usw.
Hier einmal der Codeschnipsel, wo ich das vergleichsobjekt baue:
Code:
private Calendar stringToCal(String str){
//Input in der Form "dd:MM:JJJJ hh:mm"
//Erstmal in Uhrzeit und Datum zerteilen
String[] Split1 = new String[2];
Split1= str.split(" ");
//Dann das Datum zerlegen
String[] Datum = new String[3];
Datum = Split1[0].split("\\.");
//Dann die Uhrzeit
String[] Zeit = new String[2];
Zeit = Split1[1].split(":");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DATE, Integer.parseInt(Datum[0]));
cal.set(Calendar.MONTH, Integer.parseInt(Datum[1])-1);
cal.set(Calendar.YEAR, Integer.parseInt(Datum[2]));
cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(Zeit[0]));
cal.set(Calendar.MINUTE, Integer.parseInt(Zeit[1]));
cal.set(Calendar.SECOND,0);
cal.set(Calendar.MILLISECOND,0);
return cal;
}
Das übergebe ich dann an die vergleichsmethode von der Zeitraum-Klasse:
Code:
public void delMesse(Calendar cal){
//Die System outs sind teilweise unterschiedlich!
System.out.println(Zeitraum.get(0).getCal().toString());
System.out.println(cal.toString());
if (Zeitraum.contains(cal)){
System.out.println(true);
}
}
Eine Beispielausgabe, villeicht ist das hilfreich:
Code:
java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Berlin",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=143,lastRule=java.util.SimpleTimeZone[id=Europe/Berlin,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2009,MONTH=5,WEEK_OF_YEAR=23,WEEK_OF_MONTH=1,DAY_OF_MONTH=6,DAY_OF_YEAR=156,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=30,SECOND=0,MILLISECOND=0,ZONE_OFFSET=3600000,DST_OFFSET=3600000]
java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Europe/Berlin",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=143,lastRule=java.util.SimpleTimeZone[id=Europe/Berlin,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2009,MONTH=5,WEEK_OF_YEAR=26,WEEK_OF_MONTH=4,DAY_OF_MONTH=2,DAY_OF_YEAR=174,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=7,HOUR_OF_DAY=18,MINUTE=30,SECOND=0,MILLISECOND=0,ZONE_OFFSET=3600000,DST_OFFSET=3600000]
das Zusammenbauen habe ich auch schonmal mit einem DateFormat versucht, so:
Code:
private Calendar stringToCal(String str){
Date d = new Date();
Calendar cal = Calendar.getInstance();
DateFormat formatter = DateFormat.getDateTimeInstance();
try {
d = formatter.parse(str);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
cal.setTime(d);
cal.set(Calendar.MILLISECOND,0);
return cal;
}
Aber auch das geht nicht.
Das wahr jetzt viel Text, ich hoffe mein Problem ist klar geworden.
Villeicht hat jemand von euch eine Idee?
Danke, Lg LinuxUser03