Je prends les réponses de RealHowTo et Ben J et je crée ma propre version :
public class TimeAgo {
public static final List temps = Arrays.asList(
TimeUnit.DAYS.toMillis(365),
TimeUnit.DAYS.toMillis(30),
TimeUnit.DAYS.toMillis(1),
TimeUnit.HOURS.toMillis(1),
TimeUnit.MINUTES.toMillis(1),
TimeUnit.SECONDS.toMillis(1) );
public static final List tempsString = Arrays.asList("année","mois","jour","heure","minute","seconde");
public static String toDuration(long durée) {
StringBuffer res = new StringBuffer();
for(int i=0;i< TimeAgo.temps.size(); i++) {
Long actuel = TimeAgo.temps.get(i);
long temp = durée/actuel;
if(temp>0) {
res.append(temp).append(" ").append( TimeAgo.tempsString.get(i) ).append(temp != 1 ? "s" : "").append(" auparavant");
break;
}
}
if("".equals(res.toString()))
return "0 seconde auparavant";
else
return res.toString();
}
public static void main(String args[]) {
System.out.println(toDuration(123));
System.out.println(toDuration(1230));
System.out.println(toDuration(12300));
System.out.println(toDuration(123000));
System.out.println(toDuration(1230000));
System.out.println(toDuration(12300000));
System.out.println(toDuration(123000000));
System.out.println(toDuration(1230000000));
System.out.println(toDuration(12300000000L));
System.out.println(toDuration(123000000000L));
}}
qui affichera le suivant
0 seconde auparavant
1 seconde auparavant
12 seconds ago
2 minutes ago
20 minutes ago
3 heures auparavant
1 jour avant
14 jours auparavant
4 mois auparavant
3 ans auparavant
1 votes
Voir : stackoverflow.com/questions/11/how-do-i-calculate-relative-time C'est en C#, mais je suis sûr que vous pouvez le convertir sans problème.