So erstellen Sie einen einzelnen Ausdruck, der die Zeitdifferenz zwischen zwei Datumsangaben in Jahren, Monaten, Tagen, Stunden, Minuten und Sekunden anzeigt

Wie kann ich ein @ erstelleSingl Jasper Bericht JRExpression das visualisiert den Unterschied zwischen zweijava.util.Date im Format JJ Jahr (e) Monat (e) TT Tag (e), HH Stunde (n), MM Minute (n), SS Sekunde (n)

java.util.Date startDate
java.util.Date endDate

A JRExpression ist eine einzelne Zeile, in der die Variablendeklaration nicht zulässig ist. Sie können jedoch bedingte Anweisungen mit der Syntax @ verwendeboolean ? yes:no, für Sie, die nicht vertraut sind, stellen Sie sich eine Zeile von @ vSystem.out.println();

Beispiel für die gewünschte Ausgabe (wenn Sie eine gute Lösung haben, entfernen Sie die Beschreibung der Einheit, wenn sie nicht vorhanden ist, und betrachten Sie Singular / Plural, aber dies ist nicht erforderlich, wenn es sich um eine Folge von if-Anweisungen handelt):

2 Jahre, 8 Monate, 12 Tage, 2 Stunden, 53 Minuten, 10 s

1 Stunde, 1 Minute

both 2. Februar - 4. März und 4. März - 6. April sind "1 Monat, 2 Tage", die Sommerzeit kann jedoch ignoriert werden - danke @ Affe

Zusätzliche Anforderungen

Nur Jasper Bericht Abhängigkeiten kann verwendet werden (Joda ist nicht im Lieferumfang enthalten).Preferable jdk 1.7 oder weniger (1.8 wird akzeptiert, wenn dies nur eine Lösung ist)

Die Antwort muss nicht als Jasper-Berichtsausdruck formatiert werden. Es kann sich um ein einfaches @ handelSystem.out.println code (Ich bearbeite Ihre Antwort gerne später, um auch den Jasper-Berichts-Ausdruckscode hinzuzufügen.) Beispie

((endDate.getTime()-startDate.getTime()) / (60 * 60 * 1000)) % 24 + " hour(s), " +  
((endDate.getTime()-startDate.getTime()) / (60 * 1000)) % 60 + " minute(s)"

Was habe ich versucht:

Ich beantworte mehrere Fragen im Jasper-Berichtsabschnitt von SO, und diese Frage ist bei der Berichterstellung häufig. Ich würde eine gute Antwort aus dem Java-Bereich vorziehen, die ich verlinken kann, anstatt meinen Code zu diesem Problem weiterzugeben (die ich nur teilweise als Beispiel lösen würde).

Dies ist ein Beispiel für eine Frage in Jasper-Report: Zeit- und Datumsunterschied berechnen

Einiger Referenzcode:

Datums- / Zeitverschiebung in Java berechnen

Wie finde ich die Differenzdauer zwischen zwei Daten in Java?

Für Sie, die mit Jasper Report vertraut sind, möchte ich die Variablendeklaration nicht verwenden, da dies die Lösung ungültig machen würde, wenn der Benutzer sie für Parameter verwenden muss.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage