in gshell/gshell-log/src/main/java/org/apache/servicemix/kernel/gshell/log/layout/AbsoluteTimeDateFormat.java [82:136]
StringBuffer format(Date date, StringBuffer sbuf,
FieldPosition fieldPosition) {
long now = date.getTime();
int millis = (int)(now % 1000);
if ((now - millis) != previousTime) {
// 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);
int start = sbuf.length();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
if(hour < 10) {
sbuf.append('0');
}
sbuf.append(hour);
sbuf.append(':');
int mins = calendar.get(Calendar.MINUTE);
if(mins < 10) {
sbuf.append('0');
}
sbuf.append(mins);
sbuf.append(':');
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(), previousTimeWithoutMillis, 0);
previousTime = now - millis;
}
else {
sbuf.append(previousTimeWithoutMillis);
}
if(millis < 100)
sbuf.append('0');
if(millis < 10)
sbuf.append('0');
sbuf.append(millis);
return sbuf;
}