コード例 #1
0
  /**
   * 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;
  }
コード例 #2
0
  /**
   * 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();
  }