2016-11-08 5 views
2

Ich weiß, das ist wahrscheinlich eine wirklich dumme Frage, aber ich frage mich, ob es eine Möglichkeit gibt, ein lokales Datum von einem anderen Datum abzusetzen, oder wenn nicht, localDateTime nur auf Datum und Zeit zu richten dann subtrahieren von dort?Java Subtrahieren LocalDateTime foo von LocalDateTime Bar

Ich muss in der Lage, das Datum Zeitdifferenz zu erarbeiten, zwischen dem Beginn der Aufzeichnung foo und dem Beginn der Aufzeichnung bar (das auch das Ende von Foo ist)

Ich bin ziemlich neu in Java und der Einfachheit halber möchte ich in der Lage sein, es in etwa das gleiche Layout zu halten, anstatt von Sekunden etc. zu konvertieren.

Wenn Hinzufügen und Subtrahieren von LocalDateTime keine Option ist, weiß ich, dass sobald ich in DateTime I bin Ich bin in der Lage, sie zu subtrahieren mit:

Period diff = new Period(start, end); 

Aufgrund des Zwecks der Daten, muss ich sowohl das Datum als auch die Zeit für das Funktionieren behalten, und wie zuvor erwähnt, möchte ich es ziemlich einfach halten, so dass es nicht notwendig ist, zwischen Sekunden zurück zu dem Datum zu konvertieren .

Mein Problem ist wirklich nur bekommen es in einem akzeptablen Format, wie ich sage, ich bin ziemlich neu in Java und Objektorientierung als Ganzes, also bitte lächerlich machen mich für diese scheinbar einfache Frage.

Danke,

Jonny

+1

Antwort schon hier http://stackoverflow.com/questions/25747499/java-8-calculate-difference-between-two-localdatetime – JynXXedRabbitFoot

+0

Wenn Sie diese Frage beziehen sich auf Joda-Time-Klassen beziehen, dann sollten Sie es so sagen ausdrücklich. Außerdem befindet sich das Joda-Time-Projekt jetzt im Wartungsmodus und rät zur Migration in die java.time-Klassen. –

Antwort

3

Warum verwenden Sie nicht einfach direkt LocalDateTime als auf diese Weise Parametertyp:

LocalDateTime start = new LocalDateTime(2016, 10, 4, 17, 45); 
LocalDateTime end = LocalDateTime.now(); 
PeriodType ptype = PeriodType.yearMonthDayTime(); 
Period diff = new Period(start, end, ptype); 

See auch die API of Joda-Time. Sie müssen nicht in DateTime umwandeln.

4

Die Frage nach Joda-Time ist, nicht über Java 8. Die Frage war nicht wirklich klar darüber. Wie auch immer, diese Antwort bezieht sich auf Java 8 und beantwortet daher die Frage nicht direkt. Obwohl ich denke, es ist eine angemessene Antwort, wenn jemand stattdessen Java 8 verwenden möchte.

Sie sollten wahrscheinlich die Klasse java.time.Duration überprüfen.

LocalDateTime from = ... ; 
LocalDateTime to = ... ; 
Duration duration = Duration.between(from, to); 

Wenn Sie wirklich eine Period erhalten wollen, dann ist es noch recht einfach:

LocalDateTime from = ... ; 
LocalDateTime to = ... ; 
Period period = Period.between(from.toLocalDate(), to.toLocalDate()); 
+0

Das OP verwendet offensichtlich Joda-Time, nicht Java-8-Zeit-API, siehe die Verwendung von Zeitraum-Konstruktor .. –

+0

Danke, aber es hält POD zurück, wird dies durch das gleiche Datum verursacht, da dies nur zuLocalDate ist, im Gegensatz zu der Zeit enthalten? – Jonnyr612

+0

@ Jonnyr612 Im Gegensatz zu Joda-Time oder anderen APIs verwaltet Java-8 (java.time-package) NICHT die Dauer von Datums- und Uhrzeiteinheiten zusammen. –

Verwandte Themen