# Mit Calendar Zeiträume berechnen



## Smacks (9. Januar 2005)

Hallo,

wie kann ich denn aus einem ganzen Haufen Calendar-Objekten genau die Objekte herausfischen, die in einem bestimmten Zeitraum liegen? Gibt es da eine extra Funktion? Ich hab mal angefangen ein kleines Testprogramm zu schreiben, vielleicht kann ja jemand hier ansetzen:



```
package Kalender;
import java.util.Calendar;

public class zeitraum {

	public static void main(String[] args) {
		
		Calendar kalender1, kalender2, kalender3, kalender4 = null;		
		
		kalender1 = Calendar.getInstance();
		kalender2 = Calendar.getInstance();
		kalender3 = Calendar.getInstance();
		kalender4 = Calendar.getInstance();
		
		kalender1.set(2000, 11, 20, 10, 30, 0);
		kalender2.set(2000, 9, 20, 10, 30, 0);
		kalender3.set(2000, 5, 20, 10, 30, 0);
		kalender4.set(2000, 3, 20, 10, 30, 0);
		
		
		
	}
}
```


Muss ich da evtl. mit "before" und "after" arbeiten?
siehe hier: Calendar-API

Wäre nett wenn mir jemand helfen könnte.

EDIT
Bin jetzt schon weiter... Es müsste ja mit Before und after gehen. Habe noch Fehlermeldungen bei diesem Code:


```
/*
 * Created on 09.01.2005
 *
 * To change the template for this generated file go to
 * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
 */
 
package Kalender;
import java.util.Calendar;

public class zeitraum {

	public static void main(String[] args) {
		
		Calendar kalender1, kalender2, kalender3, kalender4, raum1, raum2 = null;		
		
		kalender1 = Calendar.getInstance();
		kalender2 = Calendar.getInstance();
		kalender3 = Calendar.getInstance();
		kalender4 = Calendar.getInstance();
		raum1 = Calendar.getInstance();
		raum2 = Calendar.getInstance();
		
		kalender1.set(2000, 11, 20, 10, 30, 0);
		kalender2.set(2000, 9, 20, 10, 30, 0);
		kalender3.set(2000, 5, 20, 10, 30, 0);
		kalender4.set(2000, 3, 20, 10, 30, 0);
		raum1.set(2000, 4, 20, 10, 30, 0);
		raum2.set(2000, 10, 20, 10, 30, 0);
		
		Calendar[] kalenderArray = new Calendar[3];
		
		
		System.out.println("Diese Kalenderobjekte befinden sich in dem Zeitraum vom " +
			raum1.get( Calendar.DATE ) + "." + raum1.get(Calendar.MONTH) + "." + raum1.get( Calendar.YEAR  ) +
			" bis zum " + raum2.get( Calendar.DATE ) + "." + raum2.get(Calendar.MONTH) + "." + raum2.get( Calendar.YEAR  ));
			
		

		
		for (int i = 0; i < kalenderArray.length; i++){
			
			boolean richtig1 = kalenderArray[i].after(raum1);
			boolean richtig2 = kalenderArray[i].before(raum2);
			
			
			
			
			if (richtig1 == true && richtig2 == true){
				
				System.out.println(kalenderArray[i].get( Calendar.DATE ) + "." + kalenderArray[i].get(Calendar.MONTH) + "." + 
				kalenderArray[i].get( Calendar.YEAR  ));
				
							
			}
			else {
				continue;
			}		
		}	
	}
}
```

Ich will die kalender 1-4 von den Zeitraum raum1 - raum2 herausfischen. SIeht jemand meienn Fehler?


----------



## Snape (10. Januar 2005)

Moin,
ich hab selbst damit noch nichts berechnet, aber prinzipiell würde ich mir für diese Anforderung die Klassen Date, Calendar und GregorianCalender anschauen. Evtl. kombiniert mit System.currentTimeMillis(). Da gibt es ganz sicher Möglichkeiten der Berechnungen von Tagen usw. zwischen zwei Datumsangaben.


----------



## Smacks (10. Januar 2005)

Danke für die Antwort. Also tatsächlich kann man Calendar-Zeiträume bequem mit before und after berechnen. Ich hatte nur vergessen mein Array mit Calendar-Objekten zufüllen, daran lags.

Der Thread hat sich dann erledigt.


----------

