Mostrar el tiempo transcurrido desde una fecha dada a ahora

Un listado con fechas puede resultar más fácil de leer si en vez de mostrar las fechas, mostramos el tiempo que ha transcurrido desde esa fecha hasta ahora. Por ejemplo, un listado como este:

Nombre Fecha creacion
Roberto Jose 21/11/2008 14:00:01
Jose Luis 22/12/2008 19:23:45
Luis Roberto 26/12/2008 22:30:10

Puede quedar más elegante así:

Nombre Creado hace
Roberto Jose 15 min y 7 seg
Jose Luis 2 horas, 6 min y 56 seg
Luis Roberto 18 dias, 9 horas, 15 min y 2 seg

En Java no existe nada en el JDK que nos muestre esta información. Podemos usar la librería Joda time, que es muy útil para hacer calculos con fechas, mostrar intervalos de tiempo y manipulaciones complejas con fechas absolutas y relativas. Pero si solo queremos motrar esta información y no nos apetece importar un jar en nuestro proyecto para esto solo, podemos usar este código:

public static String desde(Long time) {
 int total = (int)((System.currentTimeMillis()/1000)-(time/1000));
 if (total < 60) { // menos que un minuto (60 segundos)
    return total+" seg";
 } else if (total < 3600) { // menos que una hora (60*60 segundos)
    return (total/60)+" min y "+(total%60)+" seg";
 } else if (total < 84600) { // menos que un dia (60*60*24 segundos)
    return (total/3600)+" horas, "+(total%3600)/60+" min y "+(total%60)+" seg";
 }
// Mas de un dia
 return (total/84600)+" dias, "+(total%84600)/3600+" horas, "+(total%3600)/60+" min y "+(total%60)+" seg";
}

Aunque es mejorable, puede servir para empezar. :)