El generador de origen Eclipse toString es extremadamente útil, excepto cuando los objetos contienen un objeto de calendario. ¿Hay alguna manera de cambiar el generador de Eclipse toString para mostrar los objetos de Calendar de forma más limpia? Posiblemente usando un SimpleDateFormat común? ¿O un complemento confiable?¿Cómo se puede cambiar el generador de código de Eclipse toString para mostrar menos objetos Calendarios menos detallados?
deseado toString Calendario ("aaaa-MM-dd hh: mm: ss"):
2011-08-22 13:29:26
Muestra Eclipse Calendario toString (esto es bastante ridículo):
java.util.GregorianCalendar[time=1314034166984,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/New_York",offset=-18000000,dstSavings=3600000,useDaylight=true,transitions=235,lastRule=java.util.SimpleTimeZone[id=America/New_York,offset=-18000000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2011,MONTH=7,WEEK_OF_YEAR=35,WEEK_OF_MONTH=4,DAY_OF_MONTH=22,DAY_OF_YEAR=234,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=1,HOUR_OF_DAY=13,MINUTE=29,SECOND=26,MILLISECOND=984,ZONE_OFFSET=-18000000,DST_OFFSET=3600000]
FuryComputers me llevó a una solución. Aquí está una implementación personalizada de ToString rápida y sucia:
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class MyToStringBuilder {
private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
private String str;
private boolean isFirst;
public MyToStringBuilder(Object o) {
isFirst = true;
str = "";
str += o.getClass().getSimpleName() + " [";
}
public MyToStringBuilder appendItem(String variableName, Object value) {
if(value != null){
this.addItem(variableName, value.toString());
} else {
this.addItem(variableName, "null");
}
return this;
}
public MyToStringBuilder appendItem(String variableName, Calendar value) {
if(value != null){
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
this.addItem(variableName, sdf.format(value.getTime()));
} else {
this.addItem(variableName, "null");
}
return this;
}
private void addItem(String variableName, String value) {
if(!isFirst){
str += ", ";
}
isFirst = false;
str += variableName + "=";
str += value;
}
@Override
public String toString() {
str += "]";
return str;
}
}
¡Gracias!
Informe a todo el mundo para decidir sobre un estándar de tiempo que tiene más sentido – James
# world: Decidir sobre un estándar de tiempo que tiene más sentido ! – HeavyE