Hallo zusammen,
ich habe im Forum eine Ermittlung für Feiertage gefunden. Diese möchte ich nun implementieren. Ich übergeben einen String, formatieren diesen und stelle dann den Vergleichg an (Siehe Testausgaben). Wenn ich mir die Ausgaben ansehe, sieht alles gut aus, allerdings scheint etwas an der Formatierung zu fehlen, da der Feiertag nicht mit "true" zurückgegeben wird.
Was habe ich falsch gemacht?
ich habe im Forum eine Ermittlung für Feiertage gefunden. Diese möchte ich nun implementieren. Ich übergeben einen String, formatieren diesen und stelle dann den Vergleichg an (Siehe Testausgaben). Wenn ich mir die Ausgaben ansehe, sieht alles gut aus, allerdings scheint etwas an der Formatierung zu fehlen, da der Feiertag nicht mit "true" zurückgegeben wird.
Was habe ich falsch gemacht?
Code:
package project;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class Feiertage {
private int jahr;
private String datum;
private DateFormat formatDay;
public Feiertage() {
super();
}
public boolean isFeiertag(String datum)
{
this.datum = datum;
Date datumFormat = null;
formatDay = new SimpleDateFormat("dd.MM.yyyy");
try {
datumFormat = formatDay.parse(datum);
System.out.println("[INFO ]: Datum konvertiert nach: " + datumFormat );
}
catch(Exception ex) {
System.out.println("[WARNUNG]: Datumskonvertierung fehlgeschlagen!");
}
Calendar tmp_datum = new GregorianCalendar();
tmp_datum.setTime(datumFormat);
int jahr = tmp_datum.get(Calendar.YEAR);
int a = jahr % 19;
int b = jahr % 4;
int c = jahr % 7;
int monat = 0;
int m = (8 * (jahr / 100) + 13) / 25 - 2;
int s = jahr / 100 - jahr / 400 - 2;
m = (15 + s - m) % 30;
int n = (6 + s) % 7;
int d = (m + 19 * a) % 30;
if (d == 29)
d = 28;
else if (d == 28 && a >= 11)
d = 27;
int e = (2 * b + 4 * c + 6 * d + n) % 7;
int tag = 21 + d + e + 1;
if (tag > 31)
{
tag = tag % 31;
monat = 3;
}
if (tag <= 31)
monat = 2;
GregorianCalendar gc_ostersonntag = new GregorianCalendar(jahr, monat, tag);
GregorianCalendar gc_ostermontag = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), gc_ostersonntag.get(Calendar.MONTH), (gc_ostersonntag.get(Calendar.DATE) + 1));
GregorianCalendar gc_karfreitag = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), gc_ostersonntag.get(Calendar.MONTH), (gc_ostersonntag.get(Calendar.DATE) - 2));
// GregorianCalendar gc_rosenmontag = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), gc_ostersonntag.get(Calendar.MONTH), (gc_ostersonntag.get(Calendar.DATE) - 48));
GregorianCalendar gc_christihimmelfahrt = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), gc_ostersonntag.get(Calendar.MONTH), (gc_ostersonntag.get(Calendar.DATE) + 39));
GregorianCalendar gc_pfinstsonntag = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), gc_ostersonntag.get(Calendar.MONTH), (gc_ostersonntag.get(Calendar.DATE) + 49));
GregorianCalendar gc_pfinstmontag = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), gc_ostersonntag.get(Calendar.MONTH), (gc_ostersonntag.get(Calendar.DATE) + 50));
GregorianCalendar gc_frohnleichnahm = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), gc_ostersonntag.get(Calendar.MONTH), (gc_ostersonntag.get(Calendar.DATE) + 60));
GregorianCalendar gc_wiedervereinigung = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), 9, 3);
GregorianCalendar gc_erster_mai = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), 4, 1);
GregorianCalendar gc_drei_koenige = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), 0, 6);
GregorianCalendar gc_weihnachten_1 = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), 11, 24);
GregorianCalendar gc_weihnachten_2 = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), 11, 25);
GregorianCalendar gc_weihnachten_3 = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), 11, 26);
GregorianCalendar gc_silvester = new GregorianCalendar(gc_ostersonntag.get(Calendar.YEAR), 11, 31);
GregorianCalendar gc_neujahr = new GregorianCalendar(gc_silvester.get(Calendar.YEAR), 0, 1);
if(gc_ostersonntag.getTime().equals(tmp_datum) ||
gc_ostermontag.getTime().equals(tmp_datum) ||
gc_karfreitag.getTime().equals(tmp_datum) ||
gc_christihimmelfahrt.getTime().equals(tmp_datum) ||
gc_pfinstsonntag.getTime().equals(tmp_datum) ||
gc_pfinstmontag.getTime().equals(tmp_datum) ||
gc_frohnleichnahm.getTime().equals(tmp_datum) ||
gc_weihnachten_1.getTime().equals(tmp_datum) ||
gc_weihnachten_2.getTime().equals(tmp_datum) ||
gc_weihnachten_3.getTime().equals(tmp_datum) ||
gc_silvester.getTime().equals(tmp_datum) ||
gc_neujahr.getTime().equals(tmp_datum) ||
gc_wiedervereinigung.getTime().equals(tmp_datum) ||
gc_erster_mai.getTime().equals(tmp_datum) ||
gc_drei_koenige.getTime().equals(tmp_datum))
{
return true;
}
else
{
return false;
}
}
}