/** * Retorna la diferencia entre una fecha y otra * * @param dateA * @param dateB * @return */ public static DateUtilData getDateDifference(Date dateA, Date dateB) { Long milliseconds = dateA.getTime() - dateB.getTime(); DateUtilData diff = new DateUtilData(); if (milliseconds > ONE_YEAR) { Long result = milliseconds / ONE_YEAR; milliseconds -= ONE_YEAR * result; diff.setYears(result); } if (milliseconds > ONE_MOUNTH) { Long result = milliseconds / ONE_MOUNTH; milliseconds -= ONE_MOUNTH * result; diff.setMonths(result); } if (milliseconds > ONE_DAY) { Long result = milliseconds / ONE_DAY; milliseconds -= ONE_DAY * result; diff.setDays(result); } if (milliseconds > ONE_HOUR) { Long result = milliseconds / ONE_HOUR; milliseconds -= ONE_HOUR * result; diff.setHours(result); } if (milliseconds > ONE_MINUTE) { Long result = milliseconds / ONE_MINUTE; milliseconds -= ONE_MINUTE * result; diff.setMinutes(result); } if (milliseconds > ONE_SECOND) { Long result = milliseconds / ONE_SECOND; milliseconds -= ONE_SECOND * result; diff.setSeconds(result); } diff.setMilliseconds(milliseconds); return diff; }
/** * A partir de la fecha pasada por parametro Retorna un texto que representa cuanto hace que * ocurrio dicha fecha / horario * * @param date * @return */ public static String getAgo(Date date) { DateUtilData diff = getDateDifference(new Date(), date); StringBuilder agoText = new StringBuilder(); agoText.append("... hace"); // Contador para que especifique solo dos tipos de detalle Integer count = 0; // Formato para cuando paso mas de un año if ((diff.getYears() > 0) && (count < 2)) { count++; agoText.append(" "); agoText.append(diff.getYears()); agoText.append(" año"); if (diff.getYears() > 1) { agoText.append("s"); } } // Formato para cuando paso mas de un mes if ((diff.getMonths() > 0) && (count < 2)) { count++; agoText.append(" "); agoText.append(diff.getMonths()); agoText.append(" mes"); if (diff.getMonths() > 1) { agoText.append("es"); } } // Formato para cuando paso mas de un dia if ((diff.getDays() > 0) && (count < 2)) { count++; agoText.append(" "); agoText.append(diff.getDays()); agoText.append(" día"); if (diff.getDays() > 1) { agoText.append("s"); } } // Formato para cuando paso mas de una hora if ((diff.getHours() > 0) && (count < 2)) { count++; agoText.append(" "); agoText.append(diff.getHours()); agoText.append(" hora"); if (diff.getHours() > 1) { agoText.append("s"); } } // Formato para cuando pasaron solo minutos if ((diff.getMinutes() > 0) && (count < 2)) { count++; agoText.append(" "); agoText.append(diff.getMinutes()); agoText.append(" minuto"); if (diff.getMinutes() > 1) { agoText.append("s"); } } // Formato para cuando pasaron solo segundos if ((diff.getSeconds() > 0) && (count < 2)) { count++; agoText.append(" "); agoText.append(diff.getSeconds()); agoText.append(" segundo"); if (diff.getSeconds() > 1) { agoText.append("s"); } } if (count == 0) { agoText.append(" muy poquito ... "); } return agoText.toString(); }