Une classe écrite pour vous aider à rendre vos dates Java plus… User friendly. Le principe est vraiment simple, juste un peu de maths pour calculer le nombre de seconde dans une heure, une minute, un jour et etc…
Je me suis arrêté exprès aux jours pour vous laisser vous exercer avec les mois voire les années, alors à vous de jouer.
package com.marclabs.utils; import java.util.Calendar; import java.util.Date; public class HumanizeDate{ public static String getDateDifference(Date thenDate) { Calendar now = Calendar.getInstance(); Calendar then = Calendar.getInstance(); now.setTime(new Date()); then.setTime(thenDate); // Recuperer la date en millisecondes long nowMs = now.getTimeInMillis(); long thenMs = then.getTimeInMillis(); // Calculer la différence en milllisecondes long diff = nowMs - thenMs; // Calculer la différence en secondes long diffMinutes = diff / (60 * 1000); long diffHours = diff / (60 * 60 * 1000); long diffDays = diff / (24 * 60 * 60 * 1000); long diffMonths = diff / (30 * 24 * 60 * 60 * 1000); if (diffMinutes < 60) { if (diffMinutes == 1) return " il y a une minute"; else return "il y a "+diffMinutes+" minutes"; } else if (diffHours < 24) { if (diffHours == 1) return "il y a une heure"; else return " il y a "+diffHours+" heures"; } else if (diffDays < 30) { if (diffDays == 1) return "il y a un jour"; else return " il y a "+diffDays+" jours"; } else { return "il y a un moment.."; } } }