Cómo crear una única expresión que muestre la diferencia horaria entre dos fechas como años, meses, días, horas, minutos, segundos

¿Cómo puedo crear unsoltero informe de jaspeJRExpression que visualizan la diferencia entre dosjava.util.Date en formato aa año (s) mes (es) dd día (s), hh hora (s), mm minuto (s), ss segundo (s)

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

Una JRExpression es una sola línea donde no se permite la declaración de variables, sin embargo, puede usar declaraciones condicionales usando la sintaxisboolean ? yes:no, para ustedes que no están familiarizados imaginen una línea deSystem.out.println();

Ejemplo de salida deseada (si tiene una buena solución, elimine la descripción de la unidad cuando no esté presente y considere singular / plural, pero esto no es necesario si es una serie de declaraciones if):

2 años, 8 meses, 12 días, 2 horas, 53 minutos, 10 s

1 hora, 1 minuto

tanto del 2 de febrero al 4 de marzo como del 4 de marzo al 6 de abril son "1 mes, 2 días", sin embargo, se puede ignorar el horario de verano - gracias @Affe

Requerimientos adicionales:

Solo informe de jaspedependencias se puede usar (joda no está incluido).Preferible jdk 1.7 o menos (1.8 se acepta si esta es la única solución)

No hay necesidad de formatear la respuesta como expresión de informe de jaspe, puede ser simpleSystem.out.println código (me complace editar su respuesta más tarde para agregar también el código de expresión de informe jasper). Ejemplo

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

¿Qué he intentado?

Respondo varias preguntas en la sección de informes de jaspe de SO, y esta pregunta es común en la generación de informes. Preferiría una buena respuesta de la sección de Java que puedo vincular en lugar de pasar mi código sobre este problema (que solo sabría resolver parcialmente como ejemplo)

Este es un ejemplo en cuestión eninforme de jaspe: Cálculo de diferencia de hora y fecha

Algún código de referencia:

Calcular la diferencia de fecha / hora en Java

¿Cómo encontrar la duración de la diferencia entre dos fechas en Java?

Para usted que está familiarizado con el informe jasper, no quiero usar la declaración de variable ya que esto invalidaría la solución si el usuario necesita usarla en los parámetros.

Respuestas a la pregunta(1)

Su respuesta a la pregunta