Bestimmung der Zeitpunkte von Ereignissen
ulrich
2023-03-23 d20d989f5495492f1258c8313db7c19b429111a3
commit | author | age
8cf849 1 package de.uhilger.zeitrechnung.ereignis;
U 2
3 import de.uhilger.zeitrechnung.Datum;
2f6b9a 4 import de.uhilger.zeitrechnung.Definition;
8cf849 5 import de.uhilger.zeitrechnung.kalender.ISOKalender;
U 6 import de.uhilger.zeitrechnung.kalender.JulianischerKalender;
7 import java.util.ArrayList;
8 import java.util.List;
9
10 /**
11  * Bestimmung der Zeitpunkte von Ereignissen im julianischen Kalendersystem
2f6b9a 12  *
8cf849 13  * <p>
2f6b9a 14  * Die Ereignis-Definition lautet:<br>
U 15  * JulianischesEreignis.getDefinition.setp1(Monat des julianischen
16  * Kalenders);<br>
17  * JulianischesEreignis.getDefinition.setp2(Tag im Monat des julianischen
18  * Kalenders);<br>
19  *
8cf849 20  * @author Ulrich Hilger
U 21  */
22 public class JulianischesEreignis extends EreignisBasis {
23
24   /**
25    * Den Typ des Ereignisses ermitteln
2f6b9a 26    *
8cf849 27    * @return Ereignis.TYP_JULIANISCH
U 28    */
29   @Override
30   public int getTyp() {
31     return TYP_JULIANISCH;
32   }
33
34   /**
2f6b9a 35    * Die Tage eines Jahres im gregorianischen Kalendersystem ermitteln, an denen
U 36    * das Ereignis stattfindet.
37    *
38    * @param isoJahr das Jahr im gregorianischen Kalender, fuer das ermittelt
39    * werden soll, an welchen Tagen das Ereignis stattfindet
40    * @return die Liste aus Datum-Objekten, die die Tage im gregorianischen
8cf849 41    * Kalender bezeichnet, an denen das Ereignis stattfindet
U 42    */
43   @Override
44   public List<Datum> getZeitpunkte(long isoJahr) {
45     ISOKalender g = new ISOKalender();
2f6b9a 46     long start = g.zuTagen(isoJahr, Definition.JANUAR, 1);
U 47     long end = g.zuTagen(isoJahr, Definition.DEZEMBER, 31);
48     JulianischerKalender j = new JulianischerKalender();
49     Datum jStart = j.vonTagen(start);
50     long jStartJahr = jStart.getJahr();
51     Datum jEnd = j.vonTagen(end);
52     long jEndJahr = jEnd.getJahr();
53     long anzahlJahre = (jEndJahr - jStartJahr) + (long) 1;
8cf849 54     ArrayList list = new ArrayList();
2f6b9a 55     for (long y = 0; y < anzahlJahre; y++) {
d20d98 56       long tage = j.zuTagen(jStartJahr + y, (int) definition.getp1(), (int) definition.getp2());
c14e57 57       if(tage >= start && tage <= end) {
U 58         list.add(g.vonTagen(tage));
59       }
2f6b9a 60     }
8cf849 61     return list;
2f6b9a 62   }
8cf849 63 }