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/JulianischesEreignis.java |   47 ++++++++++++++++++++++++++++++-----------------
 1 files changed, 30 insertions(+), 17 deletions(-)

diff --git a/src/de/uhilger/zeitrechnung/ereignis/JulianischesEreignis.java b/src/de/uhilger/zeitrechnung/ereignis/JulianischesEreignis.java
index 245a221..bd1ccef 100644
--- a/src/de/uhilger/zeitrechnung/ereignis/JulianischesEreignis.java
+++ b/src/de/uhilger/zeitrechnung/ereignis/JulianischesEreignis.java
@@ -1,6 +1,7 @@
 package de.uhilger.zeitrechnung.ereignis;
 
 import de.uhilger.zeitrechnung.Datum;
+import de.uhilger.zeitrechnung.Definition;
 import de.uhilger.zeitrechnung.kalender.ISOKalender;
 import de.uhilger.zeitrechnung.kalender.JulianischerKalender;
 import java.util.ArrayList;
@@ -8,19 +9,21 @@
 
 /**
  * Bestimmung der Zeitpunkte von Ereignissen im julianischen Kalendersystem
- * 
+ *
  * <p>
- * Die Ereignis-Definition lautet:<br> 
- * JulianischesEreignis.getDefinition.setp1(Monat des julianischen Kalenders);<br>
- * JulianischesEreignis.getDefinition.setp2(Tag im Monat des julianischen Kalenders);<br>
- * 
+ * Die Ereignis-Definition lautet:<br>
+ * JulianischesEreignis.getDefinition.setp1(Monat des julianischen
+ * Kalenders);<br>
+ * JulianischesEreignis.getDefinition.setp2(Tag im Monat des julianischen
+ * Kalenders);<br>
+ *
  * @author Ulrich Hilger
  */
 public class JulianischesEreignis extends EreignisBasis {
 
   /**
    * Den Typ des Ereignisses ermitteln
-   * 
+   *
    * @return Ereignis.TYP_JULIANISCH
    */
   @Override
@@ -29,22 +32,32 @@
   }
 
   /**
-   * Die Tage eines Jahres im gregorianischen Kalendersystem 
-   * ermitteln, an denen das Ereignis stattfindet.
-   * 
-   * @param isoJahr das Jahr im gregorianischen Kalender, 
-   * fuer das ermittelt werden soll, an welchen Tagen das Ereignis stattfindet
-   * @return die Liste aus Datum-Objekten, die die Tage im gregorianischen 
+   * Die Tage eines Jahres im gregorianischen Kalendersystem ermitteln, an denen
+   * das Ereignis stattfindet.
+   *
+   * @param isoJahr das Jahr im gregorianischen Kalender, fuer das ermittelt
+   * werden soll, an welchen Tagen das Ereignis stattfindet
+   * @return die Liste aus Datum-Objekten, die die Tage im gregorianischen
    * Kalender bezeichnet, an denen das Ereignis stattfindet
    */
   @Override
   public List<Datum> getZeitpunkte(long isoJahr) {
-    Datum jDatum = new Datum(isoJahr, (int) definition.getp1(), (int) definition.getp2());
-    JulianischerKalender j = new JulianischerKalender();
-    long tage = j.zuTagen(jDatum);
     ISOKalender g = new ISOKalender();
+    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;
     ArrayList list = new ArrayList();
-    list.add(g.vonTagen(tage));
+    for (long y = 0; y < anzahlJahre; y++) {
+      long tage = j.zuTagen(jStartJahr + y, (int) definition.getp1(), (int) definition.getp2());
+      if(tage >= start && tage <= end) {
+        list.add(g.vonTagen(tage));
+      }
+    }
     return list;
-  }  
+  }
 }
\ No newline at end of file

--
Gitblit v1.9.3