두 클래스가 있습니다. 첫 번째는 달력 필드와 정수 필드 (tz 오프셋)를 포함합니다. 초는 XmlGregorianCalendar 필드를 포함합니다. 나는 전나무 종류에서 날짜를 초에서 비교하고 싶다.XMLGregorianCalendar를 GregorianCalendar로 변환하는 올바른 방법
Calendar cal1 = (Calendar) SerializationUtils.clone(firstClass.getDepartureDatetime());
cal1.add(Calendar.MINUTE, -firstClass.getDepartureTzOffset());
GregorianCalendar cal2 = secondClass.getDepartureDateTime().toGregorianCalendar();
cal2.add(Calendar.MINUTE, -secondClass.getDepartureDateTime().getTimezone());
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(" - Second [" + DateFormat.getDateTimeInstance().format(cal2.getTime()) + "]");
LOGGER.debug(" - First [" + DateFormat.getDateTimeInstance().format(cal1.getTime()) + "]");
}
동등한 날짜 (11 월 19 일, GMT + 1 월 11 일, GMT + 1)를 설정했습니다.
데비안 레니, TZ가 CET이다 :
시스템 TZ에 따라서는 (GMT TZ)에서 다른 결과를 도시
Second [Nov 19, 2011 7:00:00 AM] - wrong!
First [Nov 19, 2011 8:00:00 AM] -right!
Win7에, TZ는 GMT + 3 :
Second [Nov 19, 2011 8:30:00 AM] - wrong!
First [Nov 19, 2011 8:00:00 AM] -right!
내가 뭘 잘못하고있어?
감사합니다.
UPDATE
1, 2 클래스 :
public class FirstClass implements Serializable {
private static final long serialVersionUID = -1150341618306402800L;
private Calendar departureDatetime;
private Integer departureTzOffset;
public Calendar getDepartureDatetime() {
return departureDatetime;
}
public void setDepartureDatetime(Calendar departureDatetime) {
this.departureDatetime = departureDatetime;
}
public Integer getDepartureTzOffset() {
return departureTzOffset;
}
public void setDepartureTzOffset(Integer departureTzOffset) {
this.departureTzOffset = departureTzOffset;
}
}
public class SecondClass implements Serializable
{
private final static long serialVersionUID = 12345L;
protected XMLGregorianCalendar departureDateTime;
public XMLGregorianCalendar getDepartureDateTime() {
return departureDateTime;
}
public void setDepartureDateTime(XMLGregorianCalendar value) {
this.departureDateTime = value;
}
}
SerializationUtils 아파치 평민 - 랭 LIB에서 org.apache.commons.lang.SerializationUtils입니다.
테스트 케이스를 조금 단순화 할 수 있습니까? firstClass와 secondClass 및 SerializationUtils를 가져옵니다. – Thilo
@Thilo 업데이트를 참조하십시오. – ninja