/* Zeitrechnung - a class library to determine calendar events Copyright (c) 1984-2022 Ulrich Hilger, http://uhilger.de This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package de.uhilger.zeitrechnung.kalender; import de.uhilger.zeitrechnung.Datum; /** * Die Schnittstelle Wandler muss von Klassen implementiert werden, * die zwischen generischem Datum und dem Datum eines Kalendersystems * wandeln. * * @author Ulrich Hilger * @version 2, 1.10.2022 */ public interface Wandler { /** * Die Anzahl der Tage ermitteln, die zwischen einem gegebenen Datum * eines bestimmten Kalendersystems und dem Tag liegen, der im * Gregorianischen Kalender mit dem Datum 1. Januar 1 bezeichnet ist. * * @param jahr das Jahr im betreffenden Kalendersystem * @param monat der Monat im betreffenden Kalendersystem * @param tag der Tag im betreffenden Kalendersysem * * @return Anzahl Tage, die zwischen dem gegebenen Datum * eines bestimmten Kalendersystems und dem Tag liegen, der im * Gregorianischen Kalender mit dem Datum 1. Januar 1 bezeichnet ist. * Liegt das gegebene Datum vor dem 1. Januar 1 (gregorianisch), wird * eine negative Zahl zurueckgegeben. */ public long zuTagen(long jahr, int monat, int tag); /** * Die Anzahl der Tage ermitteln, die zwischen einem gegebenen Datum * eines bestimmten Kalendersystems und dem Tag liegen, der im * Gregorianischen Kalender mit dem Datum 1. Januar 1 bezeichnet ist. * * @param d das Datum im betreffenden Kalendersystem * * @return Anzahl Tage, die zwischen dem gegebenen Datum * eines bestimmten Kalendersystems und dem Tag liegen, der im * Gregorianischen Kalender mit dem Datum 1. Januar 1 bezeichnet ist. * Liegt das gegebene Datum vor dem 1. Januar 1 (gregorianisch), wird * eine negative Zahl zurueckgegeben. */ public long zuTagen(Datum d); /** * Das Datum im betreffenden Kalendersystem fuer ein generisches Datum * ermitteln. * * @param tage Anzahl der Tage zwischen 1. Januar 1 im gregorianischen * Kalender und dem Tag, dessen Datum im betreffenden Kalendersystem * ermittelt werden soll * @return das Datum im betreffenden Kalendersystem */ public Datum vonTagen(long tage); }