Wie kann ich zwischen zwei Datumsangaben etwas messen?

Fridleif  11.04.2023, 21:52

Welche Programmiersprache willst Du denn jetzt verwenden? Python, Java, JS, C#, PHP, Python ... Du musst Dich schon entscheiden. Gibt leider keine allgemeingültiges Konstrukt

metadev550 
Beitragsersteller
 11.04.2023, 22:13

Java

2 Antworten

Ich würde dir erstmal empfehlen, für alle Datums und Zeitwerte nur die Klassen aus java.time zu benutzen. Also für ein Datum z.B. LocalDate.

Hier ist mal eine generische Funktion, mit der du für alle vergleichbaren Datentypen prüfen kannst, ob der Wert zwischen einem Start- und Endwert liegt (also das geht nicht nur mit Datumswerten, sondern z.B. auch mit Zahlen, Wörtern, Längen etc.)

public static <T extends Comparable<? super T>> boolean isBetween(T testedValue, T start, T end) {
    return testedValue.compareTo(start) >= 0 && testedValue.compareTo(end) <= 0;
}

Die kannst du dann z.B. so verwenden:

if (isBetween(LocalDate.now(), dateStart, dateEnd)) {
    // Führe irgendwas aus
}

Oder wenn du die Funktion nicht benutzen willst, dann so:

if (LocalDate.now().compareTo(dateStart) >= 0 && LocalDate.now().compareTo(dateEnd) <= 0) {
    // Führe irgendwas aus
}

DateTime kenne ich nicht, ich würde daher einfach die Timestamps vergleichen

if ((currentdate.getTime()>=dateStart.getTime()) &&  (currentdate.getTime()<dateEnd.getTime()+86400000)) { ... }

Ob nun mit "=" oder ohne musst du wissen. Da der Timestamp wahrscheinlich 00:00 Uhr ist, muss man am Ende diese 86400000 (60*60*24*1000) addieren (Timestamps in Java sind Millisekunden).

Woher ich das weiß:Berufserfahrung – Softwareentwickler & Admin