From c14e57e2f54e38a54059d57146ea98d1ffc4762f Mon Sep 17 00:00:00 2001 From: ulrich Date: Mon, 20 Mar 2023 17:26:59 +0000 Subject: [PATCH] Berichtigung am JulianischenEreignis --- src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java | 41 +++++++++++++++++++++++++++++------------ 1 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java b/src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java index b7a2a6a..93f8e1d 100644 --- a/src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java +++ b/src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java @@ -23,8 +23,11 @@ import de.uhilger.zeitrechnung.kalender.ISOKalender; import de.uhilger.zeitrechnung.kalender.JulianischerKalender; import de.uhilger.zeitrechnung.kalender.Wandler; +import de.uhilger.zeitrechnung.kalender.Zeitrechnung; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; /** * Wochentag vor oder nach einem Datum, zB Totensonntag (fuenter Sonntag @@ -74,22 +77,36 @@ */ @Override public List<Datum> getZeitpunkte(long isoJahr) { + ISOKalender g = new ISOKalender(); Definition def = getDefinition(); long monat = def.getp2(); long tag = def.getp3(); long kalender = def.getp5(); - Wandler w; - if(1 == kalender) { - w = new ISOKalender(); - } else { - w = new JulianischerKalender(); - } - long basisDatum = w.zuTagen(isoJahr, (int) monat, (int) tag); - long generischesDatum = ((BasisKalender) w).nterTag((int) def.getp4(), (int) def.getp1(), basisDatum); - Datum d = w.vonTagen(generischesDatum); - //Datum d = w.getDatum(); ArrayList list = new ArrayList(); - list.add(d); + if(GREGORIANISCHER_KALENDER == kalender || Long.MAX_VALUE == kalender) { + long basisDatum = g.zuTagen(isoJahr, (int) monat, (int) tag); + long generischesDatum = g.nterTag((int) def.getp4(), (int) def.getp1(), basisDatum); + Datum d = g.vonTagen(generischesDatum); + list.add(d); + list.add(d); + } else { + long start = g.zuTagen(isoJahr, Definition.JANUAR, 1); + long end = g.zuTagen(isoJahr, Definition.DEZEMBER, 31); + JulianischerKalender j = new JulianischerKalender(); + Datum jStart = j.vonTagen(start); + long jStartJahr = jStart.getJahr(); + Datum jEnd = j.vonTagen(end); + long jEndJahr = jEnd.getJahr(); + long anzahlJahre = (jEndJahr - jStartJahr) + (long) 1; + for (long y = 0; y < anzahlJahre; y++) { + long tage = j.zuTagen(jStartJahr + y, (int) def.getp2(), (int) def.getp3()); + long generischesDatum = g.nterTag((int) def.getp4(), (int) def.getp1(), tage); + if (generischesDatum >= start && generischesDatum <= end) { + Datum d = g.vonTagen(generischesDatum); + list.add(d); + } + } + } return list; } -} \ No newline at end of file +} -- Gitblit v1.9.3