public class Termin implements Datum{ // Felder int tag, monat, jahr; // Konstruktor Termin(int tag, int monat, int jahr){ this.tag = tag; this.monat = monat; this.jahr = jahr; } Termin(){ java.util.Date heute = new java.util.Date(); this.tag = heute.getDay(); this.monat = heute.getMonth(); this.jahr = heute.getYear(); } Termin (Termin t){ this(t.tag, t.monat, t.jahr); } private int tageSeit1900(){ return (jahr-1900)*365 +(jahr-1900)/4 // Schaltjahre + tageSeitJahresAnfang() - ((istSchaltJahr() && monat < 3) ? 1 : 0); } private boolean istSchaltJahr(){ return jahr%4 == 0 && jahr%4 != 100 || jahr%400 == 0 ; } private static int monatsTage(int monat, int jahr){ int tage; switch(monat){ case 2: if(jahr%4 != 0 || jahr%400 != 0 && jahr%100 == 0 )tage = 28; else tage = 29; break; case 4: case 6: case 9: case 11: tage = 30; break; default: tage = 31; } return tage; } private int tageSeitJahresAnfang(){ int t = tag-1; for( int m = 1 ; m < monat; m++){ t += monatsTage(m,jahr); } return t; } // Methoden public int getDay(){ return tag; } public int getMonth(){ return monat; } public int getYear(){ return jahr; } public String getWeekDay(){ switch (tageSeit1900()%7){ case 0 : return "Montag"; case 1 : return "Dienstag"; case 2 : return "Mittwoch"; case 3 : return "Donnerstag"; case 4 : return "Freitag"; case 5 : return "Samstag"; default : return "Sonntag"; } }; private void addDay(){ if(tag != monatsTage(monat,jahr)) tag++; else { tag=1; if(monat==12){ monat = 1; jahr++; }else monat++; } } public void addDays(int d){ for(int t=1;t<=d;t++)addDay(); }; public Termin heute(){ return new Termin(); } }// Ende der Klasse Termin