Função simples para converter datas em algo mais facilmente legível por humanos.
Irá mostrar coisas como:
- Agora (se menos de um minuto)
- 12 minutos atrás (se menos de uma hora)
- 15:47 (se mais de uma hora no mesmo dia)
- 12 de junho, 15:47 (se for um dia antes de hoje)
Código:
public static String getReadableTimeSince(Date input)
{
Date now = new Date();
if(now.before(input))
{
Log.error("Date cannot be in the future:" + input);
return "";
}
if(CalendarUtil.isSameDate(input, now))
{
Long diff = now.getTime() - input.getTime();
if(TimeUnit.MILLISECONDS.toSeconds(diff) < 60)
{
return "Now";
}
else if(TimeUnit.MILLISECONDS.toMinutes(diff) < 60)
{
long mins = TimeUnit.MILLISECONDS.toMinutes(diff);
return mins == 1 ? mins + " min" : mins + " mins";
}
else if(TimeUnit.MILLISECONDS.toHours(diff) < 24)
{
return DateTimeFormat.getFormat("kk:mm").format(input);
}
}
else if(CalendarUtil.getDaysBetween(input, now) > 0)
{
// message was before today
return DateTimeFormat.getFormat("dd MMM, kk:mm").format(input);
}
return "";
}