// ------------------------------ Datum.java ------------------------------- \\
public class Datum
{
// ---------------------------- isLeapYear() ----------------------------- \\
public static boolean isLeapYear(int jahr)
{
return (jahr%4==0 && jahr%100!=0) || jahr%400==0 ;
}
// ------------------------------ isDate() ------------------------------- \\
public static boolean isDate(int tag, int mon, int jahr)
{
boolean leapyear = isLeapYear(jahr) ;
if ( jahr<1562 || mon<1 || mon>12 || tag<1 || tag>31 )
return false;
if ( (mon==4 || mon==6 || mon==9 || mon==11) && tag>30)
return false;
if( (mon==2 && leapyear && tag>29) ||
(mon==2 && !leapyear && tag>28) )
return false;
return true;
}
// ------------------------- getDayOfTheWeek() --------------------------- \\
public static int getDayOfTheWeek(int d, int m, int y)
{
int h = m , k = y ;
if ( m <=2 )
{
h = m + 12 ;
k = y - 1 ;
}
return (d + 2*h + (3*h+3)/5 + k + k/4 - k/100 + k/400+1)%7;
}
// -------------------------- getEaster() ---------------------------- \\
public static int[] getEaster(int jahr)
{
int a, b, c, d, e, n, p, q, r, x, y, tag, monat ;
//Es geht um die Berechnung der Größen d und e
//Dazu braucht man die 9 Hilfsgrößen a, b, c, p, n, q, r, x, y !!
a = jahr%19 ;
b = jahr%4 ;
c = jahr%7 ;
p = jahr/100 ;
n = jahr%100 ;
q = p/3 ;
r = p/4 ;
x = (15+p-q-r)%30 ;
y = (4+p-r)%7 ;
d = (19*a+x)%30 ;
e = (2*b+4*c+6*d+y)%7 ;
if (d==29 && e==6)
{
//=> Ostern am 19.April
tag=19; monat=4;
}
else if (d==28 && e==6)
{
//=> Ostern am 18.April
tag=18; monat=4;
}
else if (22+d+e < 32) //ansonsten gilt
{
//=> Ostern am (22+d+e).März
tag=22+d+e; monat=3;
}
else
{
// => Ostern am (d+e-9).April
tag=d+e-9; monat=4;
}
return new int[] {tag, monat, jahr} ;
} // getEasterDate
// -------------------------- getPfingsten() --------------------------- \\
public static int[] getPfingsten(int jahr)
{
int a, b, c, d, e, n, p, q, r, x, y, tag, monat ;
//Es geht um die Berechnung der Größen d und e
//Dazu braucht man die 9 Hilfsgrößen a, b, c, p, n, q, r, x, y !!
a = jahr%19 ; b = jahr%4 ; c = jahr%7 ;
p = jahr/100 ; n = jahr%100 ;
q = p/3 ; r = p/4 ;
x = (15+p-q-r)%30 ;
y = (4+p-r)%7 ;
d = (19*a+x)%30 ;
e = (2*b+4*c+6*d+y)%7 ;
// d==28 && e==6 => Pfingsten 06.06
// d==29 && e==6 => Pfingsten 07.06
if (d==28 && e==6)
{
//=> Ostern am 18.April // Pfingsten am 06.06.
tag=6; monat=6;
}
else if (d==29 && e==6)
{
//=> Ostern am 19.April Pfingsten am 07.06
tag=7; monat=6;
}
else if (d+e < 22) //d+e<22 Pfingsten (10+d+e).05
{
tag=10+d+e; monat=5;
}
else // d+e>=22
{
// (d+e-21).06
tag=d+e-21; monat=6;
}
return new int[] {tag, monat, jahr} ;
}
// ------------------------ getFaschingsSonntag() ------------------------- \\
public static int[] getFaschingsSonntag(int jahr)
{
// noch nicht implementiert
return null;
}
// ------------------------- getAschermittwoch() -------------------------- \\
public static int[] getAschermittwoch(int jahr)
{
// noch nicht implementiert
return null;
}
} // end class Datum