private static String processDate()

in packages/stunner-editors/errai-common/src/main/java/org/jboss/errai/common/client/logging/util/StringFormat.java [252:362]


  private static String processDate(Date date, boolean upper, char suffix) {
    String retVal = null;
    switch (suffix) {
    case 'k':
      retVal = String.valueOf(date.getHours());
      break;
    case 'H':
      retVal = String.valueOf(padInt(date.getHours(), 2));
      break;
    case 'l':
      retVal = String.valueOf(date.getHours() % 12);
      break;
   case 'I':
      retVal = String.valueOf(padInt(date.getHours() % 12, 2));
      break;
   case 'M':
      retVal = String.valueOf(padInt(date.getMinutes(), 2));
      break;
    case 'S':
      retVal = String.valueOf(padInt(date.getSeconds(), 2));
      break;
    case 'L':
      retVal = String.valueOf(padInt((int) (date.getTime() % 1000), 3));
      break;
    case 'N':
      retVal = String.valueOf(padInt((int) ((date.getTime() % 1000) * 1000000), 9));
      break;
    case 'p':
      retVal = LocaleInfo.getCurrentLocale().getDateTimeFormatInfo().ampms()[date.getHours() / 12];
      break;
    case 's':
      retVal = String.valueOf(date.getTime() / 1000);
      break;
    case 'Q':
      retVal = String.valueOf(date.getTime());
      break;
    case 'C':
      retVal = String.valueOf(padInt((date.getYear() + 1900) / 100, 2));
      break;
    case 'Y':
      retVal = String.valueOf(padInt(date.getYear() + 1900, 4));
      break;
    case 'y':
      retVal = String.valueOf(padInt(date.getYear() % 100, 2));
      break;
    case 'j':
      final Date lastYear = new Date(date.getTime());
      lastYear.setYear(date.getYear() - 1);
      lastYear.setMonth(11);
      lastYear.setDate(31);

      retVal = String.valueOf(padInt(CalendarUtil.getDaysBetween(lastYear, date), 3));
      break;
    case 'z':
      retVal = TimeZone.createTimeZone(date.getTimezoneOffset()).getRFCTimeZoneString(date);
      break;
    case 'm':
      retVal = String.valueOf(padInt(date.getMonth() + 1, 2));
      break;
    case 'd':
      retVal = String.valueOf(padInt(date.getDate(), 2));
      break;
    case 'e':
      retVal = String.valueOf(date.getDate());
      break;
    case 'R':
      retVal = processDate(date, false, 'H') + ":" + processDate(date, false, 'M');
      break;
    case 'T':
      retVal = processDate(date, false, 'R') + ":" + processDate(date, false, 'S');
      break;
    case 'r':
      retVal = processDate(date, false, 'I') + ":" + processDate(date, false, 'M') + ":" + processDate(date, upper, 'S')
              + " " + processDate(date, true, 'p');
      break;
    case 'D':
      retVal = processDate(date, false, 'm') + "/" + processDate(date, false, 'd') + "/" + processDate(date, false, 'y');
      break;
    case 'F':
      retVal = processDate(date, false, 'Y') + "-" + processDate(date, false, 'm') + "-" + processDate(date, false, 'd');
      break;
    case 'Z':
      retVal = TimeZone.createTimeZone(date.getTimezoneOffset()).getShortName(date);
      break;
    case 'B':
      retVal = LocaleInfo.getCurrentLocale().getDateTimeFormatInfo().monthsFull()[date.getMonth()];
      break;
    case 'b':
    case 'h':
      retVal = LocaleInfo.getCurrentLocale().getDateTimeFormatInfo().monthsShort()[date.getMonth()];
      break;
    case 'A':
      retVal = LocaleInfo.getCurrentLocale().getDateTimeFormatInfo().weekdaysFull()[date.getDay()];
      break;
    case 'a':
      retVal = LocaleInfo.getCurrentLocale().getDateTimeFormatInfo().weekdaysShort()[date.getDay()];
      break;
    case 'c':
      retVal = processDate(date, false, 'a') + " " + processDate(date, false, 'b') + " " + processDate(date, false, 'd')
              + " " + processDate(date, false, 'T') + " " + processDate(date, false, 'Z') + " "
              + processDate(date, false, 'Y');
      break;
    default:
      throw new IllegalArgumentException("Invalid date suffix: " + suffix);
    }
    
    if (upper)
      return retVal.toUpperCase();
    else
      return retVal;
  }