in log4j-1.2-api/src/main/java/org/apache/log4j/helpers/ISO8601DateFormat.java [56:163]
public StringBuffer format(final Date date, final StringBuffer sbuf, final FieldPosition fieldPosition) {
final long now = date.getTime();
final int millis = (int) (now % 1000);
if ((now - millis) != lastTime || lastTimeString[0] == 0) {
// We reach this point at most once per second
// across all threads instead of each time format()
// is called. This saves considerable CPU time.
calendar.setTime(date);
final int start = sbuf.length();
final int year = calendar.get(Calendar.YEAR);
sbuf.append(year);
String month;
switch (calendar.get(Calendar.MONTH)) {
case Calendar.JANUARY:
month = "-01-";
break;
case Calendar.FEBRUARY:
month = "-02-";
break;
case Calendar.MARCH:
month = "-03-";
break;
case Calendar.APRIL:
month = "-04-";
break;
case Calendar.MAY:
month = "-05-";
break;
case Calendar.JUNE:
month = "-06-";
break;
case Calendar.JULY:
month = "-07-";
break;
case Calendar.AUGUST:
month = "-08-";
break;
case Calendar.SEPTEMBER:
month = "-09-";
break;
case Calendar.OCTOBER:
month = "-10-";
break;
case Calendar.NOVEMBER:
month = "-11-";
break;
case Calendar.DECEMBER:
month = "-12-";
break;
default:
month = "-NA-";
break;
}
sbuf.append(month);
final int day = calendar.get(Calendar.DAY_OF_MONTH);
if (day < 10) {
sbuf.append('0');
}
sbuf.append(day);
sbuf.append(' ');
final int hour = calendar.get(Calendar.HOUR_OF_DAY);
if (hour < 10) {
sbuf.append('0');
}
sbuf.append(hour);
sbuf.append(':');
final int mins = calendar.get(Calendar.MINUTE);
if (mins < 10) {
sbuf.append('0');
}
sbuf.append(mins);
sbuf.append(':');
final int secs = calendar.get(Calendar.SECOND);
if (secs < 10) {
sbuf.append('0');
}
sbuf.append(secs);
sbuf.append(',');
// store the time string for next time to avoid recomputation
sbuf.getChars(start, sbuf.length(), lastTimeString, 0);
lastTime = now - millis;
} else {
sbuf.append(lastTimeString);
}
if (millis < 100) {
sbuf.append('0');
}
if (millis < 10) {
sbuf.append('0');
}
sbuf.append(millis);
return sbuf;
}