From d20d989f5495492f1258c8313db7c19b429111a3 Mon Sep 17 00:00:00 2001 From: ulrich Date: Thu, 23 Mar 2023 17:55:43 +0000 Subject: [PATCH] Chinesischer Kalender implementiert --- src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java | 41 ++++++++++++++++++++++++++++++++++------- 1 files changed, 34 insertions(+), 7 deletions(-) diff --git a/src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java b/src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java index d9468e7..93f8e1d 100644 --- a/src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java +++ b/src/de/uhilger/zeitrechnung/ereignis/TagDatumEreignis.java @@ -19,9 +19,15 @@ import de.uhilger.zeitrechnung.Datum; import de.uhilger.zeitrechnung.Definition; +import de.uhilger.zeitrechnung.kalender.BasisKalender; 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 @@ -37,6 +43,7 @@ * p2 Monat (1=Januar .. 12=Dezember)<br> * p3 Tag <br> * p4 Wochentag vor (-) oder nach (+), z.B. -5 fuer fuenfter wie in 'fuenfter Freitag vor' <br> + * p5 Kalendersystem 1 gregorianisch (Standardvorbelegung), 2 julianisch <br> * </p> * @author Ulrich Hilger */ @@ -70,16 +77,36 @@ */ @Override public List<Datum> getZeitpunkte(long isoJahr) { + ISOKalender g = new ISOKalender(); Definition def = getDefinition(); long monat = def.getp2(); long tag = def.getp3(); - ISOKalender w = new ISOKalender(); - long basisDatum = w.zuTagen(isoJahr, (int) monat, (int) tag); - long generischesDatum = w.nterTag((int) def.getp4(), (int) def.getp1(), basisDatum); - Datum d = w.vonTagen(generischesDatum); - //Datum d = w.getDatum(); + long kalender = def.getp5(); 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