Como criar uma única expressão exibindo diferença de horário entre duas datas como anos, meses, dias, horas, minutos, segundos

Como posso criar umsolteiro relatório de jaspeJRExpression que visualizam a diferença entre doisjava.util.Date no formato aa ano (s) mês (s) dd dia (s), hh hora (s), mm minuto (s), ss segundo (s)

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

Uma JRExpression é uma única linha em que a declaração de variável não é permitida, no entanto, você pode usar instruções condicionais usando sintaxeboolean ? yes:no, para você que não conhece, imagine uma linha deSystem.out.println();

Exemplo de saída desejada (se você tiver uma boa solução, remova a descrição da unidade quando não estiver presente e considere o singular / plural, mas isso não é necessário se for uma série de instruções if):

2 anos, 8 meses, 12 dias, 2 horas, 53 minutos, 10 s

1 hora, 1 minuto

de 2 de fevereiro a 4 de março e 4 de março - 6 de abril são "1 mês, 2 dias"; no entanto, o horário de verão pode ser ignorado - obrigado @Affe

Requisitos adicionais:

Apenas relatório de jaspedependências pode ser usado (o joda não está incluído).Jdk preferível 1.7 ou menos (1.8 é aceito se for apenas uma solução)

Não há necessidade de formatar a resposta, já que a expressão do relatório jasper pode ser uma tarefa simples.System.out.println código (fico feliz em editar sua resposta posteriormente para adicionar também o código de expressão do relatório jasper). Exemplo

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

O que eu tentei:

Respondo a várias perguntas na seção de relatório jasper do SO, e essa pergunta é comum na geração de relatórios. Eu preferiria uma boa resposta da seção java que eu possa vincular ao invés de passar meu código sobre esse problema (que eu saberia resolver apenas parcialmente como exemplo)

Este é um exemplo em questão nojasper-report: Cálculo da diferença de hora e data

Algum código de referência:

Calcular diferença de data / hora em java

Como encontrar a duração da diferença entre duas datas em java?

Para você familiarizado com o relatório jasper, não quero usar a declaração de variável, pois isso invalidaria a solução se o usuário precisar usá-la nos parâmetros.

questionAnswers(1)

yourAnswerToTheQuestion