# Prüfen, ob Tag im Jahr kein Samstag/Sonntag ist



## Markusm (8. Dez 2007)

Hallo,

ich rufe in einer anderen Klasse die Methode tagesnummer() auf, die mir die Tagesnummer des jeweiligen Jahres zurückgibt. Ich möchte nun prüfen, ob die zurückgegebene/n tagesnummer/n KEIN Samstag und kein Sonntag sind.

Das ganze möchte ich in einer Schleife überprüfen und am besten mit Rückgabe von tru oder false entsprechend der jeweiligen Tagesnummer. Leider weiß ich nicht, wie ich das hinbekommen soll. Ich habe schon in der Klasse Gregoriancalendar nachgeschaut, aber ich werde nicht schlau daraus. Könnt Ihr mir bitte weiterhelfen?



```
=========================================================================
 * Funktion:	tagesnummer(int tag, int monat, int jahr)
 * Parameter:	tag (long)		: Tag
 *				monat (long) 	: Monat
 *				jahr (long)		: Jahr
 * Rueckgabe:	n (int)	   : Tagesnummer rel. zum Jahresanfang
 *	  					     (1=1.1.,2=2.1.,...365/366=31.12)
 * Beschreibung: Algorithmus von Robertson
 * =========================================================================
 */
 int tagesnummer(int tag, int monat, int jahr)
 {
   int d, e;
   d = (monat+10)/13;
   e = tag + (611*(monat+2))/20 - 2*d - 91;
   return (e + schaltjahr (jahr) * d );
 }
```


----------



## Joker (8. Dez 2007)

Selbst berechnen würde ich das nicht, dass ist doch viel zu viel Arbeit 

Hier die Lösung mit den Calendar Klassen (Achtung Monate beginnen mit 0 anstatt 1, deshalb das (month-1) in den 
beiden Methoden).

Tagesnummer:


```
public static int getDayNr(int year, int month, int date) {
		return new GregorianCalendar(year,month-1,date).get(GregorianCalendar.DAY_OF_YEAR); 
	}
```

Wochentage:


```
public static boolean isWeekDay(int year, int month, int date) {
		GregorianCalendar cal = new GregorianCalendar(year,month-1,date);
		if(cal.get(GregorianCalendar.DAY_OF_WEEK) == GregorianCalendar.SATURDAY) {
			return false;
		} else if(cal.get(GregorianCalendar.DAY_OF_WEEK) == GregorianCalendar.SUNDAY) {
			return false;
		} else {
			return true;
		}	
	}
```


----------



## HLX (8. Dez 2007)

Alternativ, falls du den Tag des Jahres verwenden musst:


```
private boolean isWeekend(int dayOfYear) {
    Calendar cal = Calendar.getInstance(Locale.GERMANY);
    cal.set(Calendar.DAY_OF_YEAR, dayOfYear);
    int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
    if(dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) {
           return true;
    }
    return false;
}
```


----------



## Guest (9. Dez 2007)

Wisst Ihr auch wie ich das anhand der TAGESNUMMER überprüfen kann?

Eure Beispiele zeigen leider nur den Abgleich anhand des Datumsformats (dd.mm.yyyy) zum Wochentag  und nicht Kalendertag zu Wochentag.

Wist ihr, ob man das auch mithilfe der Tagensummer überprüfen kann, ob ein Samstag oder ein Sonntag vorliegt?


----------



## Guest (9. Dez 2007)

Ich brauche sozusagen eine Funktion, die folgendes prüft:

Prüfe, ob der 123. Tag des Jahres 2007 ein Samstag oder Sonntag ist.


----------



## HoaX (9. Dez 2007)

schau mal 3 posts weiter oben von "HLX"?! wer lesen kann ...


----------



## Guest (9. Dez 2007)

@ Hoax 

Das  it "wer lesen kann" hättest du dir sparen können. Wenn du genau hinsiehst, dann wird in den geposteten Beispielen nicht mit der Methode tagesnummer() gearbeitet ( siehe Anfangspost )

Mit dieser Methode möchte ich allerdings rechnen. Weiß vielleicht jemand, ob das möglich ist?


----------



## HLX (9. Dez 2007)

Du kannst den Rückgabewert von tagesnummer(...), sofern diese richtig arbeitet, der von mir geposteten Methode "isWeekend" übergeben.

Edit: wenn du die Jahreszahl auch angeben möchtest, musst du einen weiteren Parameter übergeben und deinen "Calendar" erweitern. Über die "set"-Methode von Calendar kannst du weitere Parameter übergeben.


----------

