import { JavaObject } from '../../java/lang/JavaObject';
import { PairNN } from '../../asd/adt/PairNN';
import type { List } from '../../java/util/List';
import { Class } from '../../java/lang/Class';
import { Wochentag } from '../../core/types/Wochentag';
export declare class DateUtils extends JavaObject {
/**
* Die Anzahl der Tage zwischen dem Jahr 0 und dem Jahr 1.1.1970
*/
static readonly DAYS_FROM_0_TO_1970: number;
/**
* Die Anzahl an Tagen in 400 Jahren
*/
static readonly DAYS_PER_400_YEARS: number;
/**
* Die Anzahl an Tagen in 100 Jahren, nicht der Speziallfall, wenn ein Jahrhundert mit einem Schaltjahr beginnt
*/
static readonly DAYS_PER_100_YEARS: number;
/**
* Die Anzahl an Tagen in 4 Jahren
*/
static readonly DAYS_PER_4_YEARS: number;
/**
* Die Anzahl an Tagen in einem Jahr, welches kein Schaltjahr ist
*/
static readonly DAYS_PER_YEAR: number;
/**
* Die Anzahl an Tagen in einem Schaltjahr
*/
static readonly DAYS_PER_LEAP_YEAR: number;
/**
* Das kleinste gültige Jahr für das alle Datumsberechnungen geprüft wurden.
*/
static readonly MIN_GUELTIGES_JAHR: number;
/**
* Das größte gültige Jahr für das alle Datumsberechnungen geprüft wurden.
*/
static readonly MAX_GUELTIGES_JAHR: number;
/**
* Ein Mapping für den Monat als Zahl zu seiner textuellen Beschreibung.
*/
private static readonly MONAT_ZU_TEXT;
/**
* Ein Mapping für den Wochentag als Zahl zu seiner textuellen Beschreibung.
*/
private static readonly WOCHENTAG_ZU_TEXT;
/**
* Liefert für den jeweiligen Monat im Jahr die Summe der vergangenen Tage.
* [0][3] bedeutet, dass im März bereits 59 Tage vergangen sind (kein Schaltjahr).
* [1][3] bedeutet, dass im März bereits 60 Tage vergangen sind (Schaltjahr).
*/
private static readonly monat_zu_vergangene_tage;
private constructor();
/**
* Liefert ein aus dem Datum extrahiertes int[] mit dem Inhalt [jahr, monat, tagImMonat, tagInWoche, tagImJahr, kalenderwoche, kalenderwochenjahr].
*
* Gültige Werte sind im Bereich:
* Index 0: jahr = 1900 bis 2900
* Index 1: monat = 1 (Januar) bis 12 (Dezember)
* Index 2: tagImMonat = 1 bis 31
* Index 3: tagInWoche = 1 (Montag) bis 7 (Sonntag)
* Index 4: tagImJahr = 1 bis 365 oder 366
* Index 5: kalenderwoche = 1 bis 52 oder 53
* Index 6: kalenderwochenjahr = 1900 bis 2900 (das Jahr der Kalenderwoche)
*
* Auszug aus Wikipedia: Da ISO 8601 den Montag als ersten Tag der Woche definiert, ist dies somit die erste Woche,
* von der mehr Tage (mindestens vier) auf das neue Jahr fallen als auf das alte Jahr.
* Äquivalent hierzu sind die folgenden Definitionen:
* - jene Woche, die den 4. Januar enthält
* - jene Woche, die den 1. Januar enthält, falls dieser ein Montag, Dienstag, Mittwoch oder Donnerstag ist, sonst die darauf folgende Woche
*
* @param datumISO8601 Das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).
*
* @return ein aus dem Datum extrahiertes int[] mit dem Inhalt [jahr, monat, tagImMonat, tagInWoche, tagImJahr, kalenderwoche, kalenderwochen, kalenderwochenjahr]..
* @see https://de.wikipedia.org/wiki/Woche#Kalenderwoche
*/
static extractFromDateISO8601(datumISO8601: string): Array;
/**
* Prüft, ob ein gegebenes Datum im ISO-8601-Format (YYYY-MM-DD) gültig ist.
*
* @param datumISO8601 Das zu prüfende Datum als String im Format "YYYY-MM-DD".
* @return {@code true}, wenn das Datum gültig ist, sonst {@code false}.
*
* - Ein Datum ist gültig, wenn:
* - Es genau drei Teile enthält (Jahr, Monat, Tag).
* - Das Jahr nicht ungültig ist (geprüft durch {@code gibIstJahrUngueltig(int jahr)}).
* - Der Monat zwischen 1 und 12 liegt.
* - Der Tag im Monat zwischen 1 und der maximalen Anzahl an Tagen des Monats liegt
* (unter Berücksichtigung von Schaltjahren durch {@code daysInMonth(int jahr, int monat)}).
* - Falls {@code null} übergeben wird, das Format ungültig ist oder nicht-numerische Zeichen enthält, wird {@code false} zurückgegeben.
*/
static isValidDate(datumISO8601: string | null): boolean;
/**
* Liefert die Anzahl an Kalenderwochen des Jahres (52 oder 53) nach ISO8601.
*
* @param jahr Das Jahr.
*
* @return die Anzahl an Kalenderwochen des Jahres (52 oder 53) nach ISO8601.
*/
static gibKalenderwochenOfJahr(jahr: number): number;
/**
* Liefert die Anzahl an Tagen des Jahres (365 oder 366).
*
* @param jahr Das Jahr.
*
* @return die Anzahl an Tagen des Jahres (365 oder 366).
*/
static gibTageOfJahr(jahr: number): number;
/**
* Liefert eine Liste von Paaren von Wochentagen und den zugehörigen Daten im ISO8601-Format (uuuu-MM-dd) der als Array übergebenen Wochentage der Kalenderwoche des Kalenderwochenjahres.
*
Hinweis: Der Montag kann bei der 1. KW im Vorjahr liegen!
*
* @param kalenderwochenjahr Das Jahr der Kalenderwoche.
* @param kalenderwoche Die Kalenderwoche.
* @param wochentage Das Array der Wochentage.
*
* @return die Liste von Paaren von Wochentagen und den zugehörigen Daten im ISO8601-Format (uuuu-MM-dd) der der Kalenderwoche des Kalenderwochenjahres.
*/
static gibDatenDerWochentageOfJahrAndKalenderwoche(kalenderwochenjahr: number, kalenderwoche: number, wochentage: Array): List>;
/**
* Liefert das Datum im ISO8601-Format (uuuu-MM-dd) des Wochentags (aus dem Intervall 1 bis 7) der Kalenderwoche des Kalenderwochenjahres.
*
Hinweis: Der Montag kann bei der 1. KW im Vorjahr liegen!
*
* @param kalenderwochenjahr Das Jahr der Kalenderwoche.
* @param kalenderwoche Die Kalenderwoche.
* @param wochentag Der Wochentag aus dem Intervall 1 bis 7.
*
* @return das Datum im ISO8601-Format (uuuu-MM-dd) des Wochentags (aus dem Intervall 1 bis 7) der Kalenderwoche des Kalenderwochenjahres.
*/
static gibDatumDesWochentagsOfJahrAndKalenderwoche(kalenderwochenjahr: number, kalenderwoche: number, wochentag: number): string;
/**
* Liefert das Datum im ISO8601-Format (uuuu-MM-dd)des Montags der Kalenderwoche des Jahres.
*
Hinweis: Der Montag kann bei der 1. KW im Vorjahr liegen!
*
Beispiel 1: Der Montag der 1. KW im 2023 ist der 02.01.2023
*
Beispiel 2: Der Montag der 1. KW im 2024 ist der 01.01.2024
*
Beispiel 3: Der Montag der 1. KW im 2025 ist der 30.12.2023!
*
* @param kalenderwochenjahr Das Jahr der Kalenderwoche.
* @param kalenderwoche Die Kalenderwoche.
*
* @return das Datum im ISO8601-Format (uuuu-MM-dd) des Montags der Kalenderwoche des Jahres.
*/
static gibDatumDesMontagsOfJahrAndKalenderwoche(kalenderwochenjahr: number, kalenderwoche: number): string;
/**
* Liefert das Datum im ISO8601-Format (uuuu-MM-dd) des Sonntags der Kalenderwoche des Jahres.
*
Hinweis: Der Sonntag kann bei der 52/53. KW im Folgejahr liegen!
*
Beispiel 1: Der Sonntag der 52. KW im 2023 ist der 31.12.2023
*
Beispiel 2: Der Sonntag der 52. KW im 2024 ist der 29.12.2024
*
Beispiel 3: Der Sonntag der 52. KW im 2025 ist der 28.12.2025
*
Beispiel 4: Der Sonntag der 53. KW im 2026 ist der 03.01.2027!
*
Beispiel 5: Der Sonntag der 52. KW im 2027 ist der 02.01.2028!
*
* @param kalenderwochenjahr Das Jahr der Kalenderwoche.
* @param kalenderwoche Die Kalenderwoche.
*
* @return das Datum im ISO8601-Format (uuuu-MM-dd) des Sonntags der Kalenderwoche des Jahres.
*/
static gibDatumDesSonntagsOfJahrAndKalenderwoche(kalenderwochenjahr: number, kalenderwoche: number): string;
/**
* Liefert das Datum im ISO8601-Format (uuuu-MM-dd) eines Tages im Jahres.
*
Hinweis: Die Methode erlaubt Werte die zum Vorjahr oder Folgejahr führen.
*
* @param jahr Das Jahr.
* @param tagImJahr Der jeweilige Tag im Jahr. Meistens zwischen 1 und 365, aber nicht zwingend!
*
* @return das Datum im ISO8601-Format (uuuu-MM-dd) eines Tages im Jahres.
*/
static gibDatumDesTagesOfJahr(jahr: number, tagImJahr: number): string;
/**
* Liefert TRUE, falls das Jahr ungültig ist.
*
* @param jahr Das Jahr.
*
* @return TRUE, falls das Jahr ungültig ist.
*/
static gibIstJahrUngueltig(jahr: number): boolean;
/**
* Liefert das nach "DIN 5008 optional" konvertierte Datumsformat, z.B. 2023-02-28 zu 28.02.2023.
*
* @param datumISO8601 Das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2023-02-28).
*
* @return das nach "DIN 5008 optional" konvertierte Datumsformat, z.B. 2023-02-28 zu 28.02.2023.
*/
static gibDatumGermanFormat(datumISO8601: string): string;
/**
* Liefert das vom Format "2006-08-31" ins Format "31. August 2006" konvertierte Datum.
*
* @param datumISO8601 Das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2023-02-28).
*
* @return das vom Format "2006-08-31" ins Format "31. August 2006" konvertierte Datum.
*/
static gibDatumGermanFormatAusgeschrieben(datumISO8601: string): string;
/**
* Liefert die Minuten einer Zeitangabe im Format hh:mm oder hh.mm.
*
hh muss ein- oder zweistellig sein, im Bereich 0 bis 23.
*
mm muss ein- oder zweistellig sein, im Bereich 0 bis 59.
*
* @param zeit Die Zeitangabe im Format hh:mm oder hh.mm.
*
* @return die Minuten einer Zeitangabe im Format hh:mm oder hh.mm.
*/
static gibMinutenOfZeitAsString(zeit: string): number;
/**
* Liefert den ZeitString im Format hh:mm zu einer vorgegebenen Minutenanzahl.
*
Gültige Werte sind im Bereich 0 bis 24*60=1440 (exklusive).
*
* @param minuten Die Anzahl der Minuten.
*
* @return den ZeitString im Format hh:mm zu einer vorgegebenen Minutenanzahl.
*/
static gibZeitStringOfMinuten(minuten: number): string;
/**
* Liefert anhand der Minuten eine String-Repräsentation der Uhrzeit im Format "hh:mm".
*
Beispiel: 1000 Minuten --> "16:40"
*
* @param minuten Die vergangenen Minuten seit 0 Uhr.
*
* @return anhand der Minuten eine String-Repräsentation der Uhrzeit im Format "hh:mm".
*/
static getStringOfUhrzeitFromMinuten(minuten: number): string;
/**
* Liefert die Kalenderwoche zu einem bestimmten Datum.
*
* @param datumISO8601 Das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).
*
* @return die Kalenderwoche zu einem bestimmten Datum.
*/
static gibKwDesDatumsISO8601(datumISO8601: string): number;
/**
* Liefert das Kalenderwochenjahr zu einem bestimmten Datum.
*
* @param datumISO8601 das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).
*
* @return die Kalenderwochenjahr zu einem bestimmten Datum.
*/
static gibKwJahrDesDatumsISO8601(datumISO8601: string): number;
/**
* Liefert den Wochentag (Mo=1...So=7) zu einem bestimmten Datum.
*
* @param datumISO8601 das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).
*
* @return den Wochentag (Mo=1...So=7) zu einem bestimmten Datum.
*/
static gibWochentagDesDatumsISO8601(datumISO8601: string): number;
/**
* Liefert den Wochentag (Montag...Sonntag) zu einem bestimmten Datum.
*
* @param datumISO8601 das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).
*
* @return den Wochentag (Montag...Sonntag) zu einem bestimmten Datum.
*/
static gibWochentagNameDesDatumsISO8601(datumISO8601: string): string | null;
/**
* Liefert das Schuljahr zu einem bestimmten Datum. Dabei wird von dem Stichtag des
* 1.8. für den Beginn des neuen Schuljahres ausgegangen. Da das Schuljahr immer in
* zwei Kalenderjahren liegt, wird immer das erste Kalenderjahr als Schuljahr angegeben.
*
* @param datumISO8601 das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).
*
* @return das Schuljahr
*/
static getSchuljahrFromDateISO8601(datumISO8601: string): number;
/**
* Liefert das Halbjahr zu einem bestimmten Datum. Dabei wird zum Einen von dem Stichtag des
* 1.8. für den Beginn des neuen Schuljahres ausgegangen und zum Anderen wird vereinfacht (!)
* vom 1.2. als Beginn des neuen Halbjahres ausgegangen.
*
* @param datumISO8601 das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).
*
* @return das Halbjahr anhand des vereinfachten Kriteriums
*/
static getHalbjahrFromDateISO8601(datumISO8601: string): number;
/**
* Liefert das Schuljahr und das Halbjahr zu einem bestimmten Datum.
* Dabei wird zum Einen von dem Stichtag des 1.8. für den Beginn des neuen Schuljahres
* ausgegangen und zum Anderen wird vereinfacht (!) vom 1.2. als Beginn des neuen
* Halbjahres ausgegangen.
*
* @param datumISO8601 das Datum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).
*
* @return das Schuljahr (Index 0) und das Halbjahr (Index 1) anhand des vereinfachten Kriteriums
*/
static getSchuljahrUndHalbjahrFromDateISO8601(datumISO8601: string): Array | null;
/**
* Gibt den übergebenen Unix-Zeitstempel (Millisekunden seit dem 1.1.1970 um 0 Uhr) in der
* ISO-8601-Darstellung {@code uuuu-MM-dd'T'HH:mm:ss.SSS} als String zurück.
*
* @param time der Zeitstempel
*
* @return der String mit der ISO-8601-Darstellung des Zeitstempels
*/
static toISO8601(time: number): string | null;
/**
* Liefert die Tage zwischen zwei Datumsangaben als String-Array im ISO8601-Format.
*
* @param startDate das Startdatum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).
* @param endDate das Enddatum im ISO8601-Format uuuu-MM-dd (z.B. 2014-03-14).
*
* @return die Tage zwischen zwei Datumsangaben als String-Array im ISO8601-Format.
*/
static gibTageAlsDatumZwischen(startDate: string, endDate: string): Array;
/**
* Berechnet die Schnittmenge zweier Datumsintervalle und gibt alle Tage im gemeinsamen Zeitraum zurück.
*
* @param zeitraumAab Startdatum des ersten Intervalls (YYYY-MM-DD)
* @param zeitraumAbis Enddatum des ersten Intervalls (YYYY-MM-DD)
* @param zeitraumBab Startdatum des zweiten Intervalls (YYYY-MM-DD)
* @param zeitraumBbis Enddatum des zweiten Intervalls (YYYY-MM-DD)
* @return Ein Array von Strings mit allen Tagen im Format YYYY-MM-DD, die in beiden Intervallen enthalten sind.
* Falls keine Überlappung besteht, wird ein leeres Array zurückgegeben.
*/
static berechneGemeinsameTage(zeitraumAab: string, zeitraumAbis: string, zeitraumBab: string, zeitraumBbis: string): Array;
private static daysInMonth;
private static istSchaltjahr;
/**
* Gibt das Datum des Folgetages für ein gegebenes Datum im ISO-8601-Format (YYYY-MM-DD) zurück.
*
* @param datumISO8601 Ein gültiges Datum im Format "YYYY-MM-DD".
* @return Das Datum des Folgetages im selben Format.
*/
static gibDatumFolgetag(datumISO8601: string): string;
transpilerCanonicalName(): string;
isTranspiledInstanceOf(name: string): boolean;
static class: Class;
}
export declare function cast_de_svws_nrw_core_utils_DateUtils(obj: unknown): DateUtils;
//# sourceMappingURL=DateUtils.d.ts.map