Ich schreibe ein Stück Code in Java 8, das die Zeitarithmetik verwendet. Mir ist klar, dass ich das in verschiedenen Richtungen implementieren kann. Schauen wir uns den einfachen Code unten an. Natürlich ist es das gleiche Ergebnis, aber ich habe verwechselt, welcher Weg am häufigsten oder am effizientesten ist, arithmetische Operationen in Java 8 durchzuführen.
%Vor%Vielen Dank im Voraus.
Duration
kann nur Zeiträume mit fester Länge wie "Stunden", "Minuten", "Sekunden", "Tage" (wobei genau 24 Stunden pro Tag angenommen werden) verarbeiten. Sie können "Monate" nicht mit Duration
verwenden, da sich ein Monat in der Länge unterscheidet.
Period
- die andere allgemeine TemporalAmount
Implementierung - stellt Jahre, Monate und Tage getrennt dar.
Ich persönlich würde empfehlen:
plusXxx
, z. %Code%. Das ist ungefähr so einfach zu lesen wie es geht. time.plusMinutes(10)
.
Period
.
Hier ist ein Beispiel, wo sich Duration
und Period
unterscheiden können:
Ich mache mir keine Gedanken über die Effizienz, bis Sie wirklich brauchen - an welchem Punkt sollten Sie einen Benchmark haben, damit Sie verschiedene Optionen testen können.
Wenn Sie sich die Quelle ansehen, verwendet die Methode plus(long amountToAdd, TemporalUnit unit)
die Methoden plusXXX
, um die Ergebnisse zu erzeugen. Es gibt also keine Argumente für Effizienz.
Stattdessen verwenden Sie das für Ihr Szenario am besten geeignete Szenario. Ich würde vorschlagen, dass, wenn Sie Benutzereingaben verwenden, um zu entscheiden, ob Stunden, Minuten usw. hinzugefügt werden sollen, die Methode plus()
besser ist. Andernfalls ist Ihr Code möglicherweise leichter zu lesen, wenn Sie plusXXX
verwenden.