Java LocalDateTime: Zwei Daten vergleichen

Tockra

Lt. Commander
Registriert
Dez. 2008
Beiträge
1.063
Hallo Leute,

ich habe 2 Instanzen der Klasse LocalDateTime und möchte bestimmen, wie viel Tage zwischen diesen beiden Dates liegt. Wie mache ich das am elegantesten. Wenn ich das mit getDayOfYear() mache, dann muss ich leider eine Fallunterscheidung für die Jahre machen.
Gibt es da was kürzeres ?

Gruß
T

€dit: Ich hoffe
Code:
ChronoUnit.DAYS.between(LocalDateTime.now(), from)
hilft. Hat jemand spontan ne Idee wie ich Samstage und Sonntage nicht mitzählen kann?
 
Zuletzt bearbeitet:
Also bei der Calendar-Implementierung des Comparable-Interfaces kamen meines Wissens Millisekunden zurück. Wenn das bei dem Ding hier genauso ist, dann mach compareTo und teile dann geschickt ein paar mal durch 60 und 24 oder so.

Edit: joa, oder so.
 
Kommt drauf an, in welcher Form du das Ergebnis brauchst.

LocalDateTime hat eine Methode minus() und kriegst ein LocalDateTime raus... Oder du wandelst es in Millis um und kriegst die Differenz als long in Millisekunden.

Wofür brauchst du die Differenz?
 
Zuletzt bearbeitet:
Tockra schrieb:
Hat jemand spontan ne Idee wie ich Samstage und Sonntage nicht mitzählen kann?
Wenn es nicht besonders zeitkritisch ist einfach durch stumpfes Abzählen:

Code:
import java.time.LocalDateTime;
import java.time.DayOfWeek;


public class DaysBetween
{
	public static void main(String args[])
	{
		int numOfDays= 0;
		int numOfWeekdays= 0;
		long start = System.currentTimeMillis();
		for(LocalDateTime ldt= LocalDateTime.of(1901, 1, 1, 12, 0); ldt.isBefore(LocalDateTime.of(2001, 1, 1, 12, 0)); ldt= ldt.plusDays(1))
		{
			numOfDays++;
			if ( (ldt.getDayOfWeek()!=DayOfWeek.SATURDAY) && (ldt.getDayOfWeek()!=DayOfWeek.SUNDAY) ) numOfWeekdays++;
		}
		long end = System.currentTimeMillis();
		System.out.println("calculation took "+ (end-start) + " milliseconds.");
		System.out.println("numOfDays    = " + numOfDays);
		System.out.println("numOfWeekdays= " + numOfWeekdays);
	}
}

Obiger Code liefert bei mir:
Code:
calculation took 76 milliseconds.
numOfDays    = 36525
numOfWeekdays= 26089


HTH

BigNum
 

Ähnliche Themen

Antworten
9
Aufrufe
1.695
Zurück
Oben