我正在嘗試調試一些遺留代碼中的問題。爲什麼java.util.calendar對象的值在調用get(int)後發生變化
我已經縮小了問題下面的方法:
public String formatDateTimeFromCalendar (Calendar cal){
StringBuffer sb = new StringBuffer();
String hr = ""+cal.get(Calendar.HOUR_OF_DAY);
sb.append(String.format("%02d", hr));
sb.append(":");
sb.append(String.format("%02d", cal.get(Calendar.MINUTE)));
sb.append(" on ");
sb.append(String.format("%02d", cal.get(Calendar.DAY_OF_MONTH)));
sb.append("/");
sb.append(String.format("%02d", cal.get(Calendar.MONTH)+1));
sb.append("/");
sb.append(cal.get(Calendar.YEAR));
return sb.toString();
}
調試 2號線的cal
參數是一個將來的日期。 (2015-01-06T00:00:00.000Z)
與第一cal.get(
的cal
PARAM的值3線的執行已經改變之後(以2014-12-12T00:00:00.000Z)
爲什麼/這怎麼可能?
這裏是正在創建日曆:
Calendar startDateAndTime = Calendar.getInstance();
startDateAndTime.setTime(response.getStartDate().toGregorianCalendar().getTime());
startDateAndTime.set(Calendar.HOUR_OF_DAY, response.getStartTime().getHour());
startDateAndTime.set(Calendar.MINUTE, response.getStartTime().getMinute());
startDateAndTime.set(Calendar.SECOND, response.getStartTime().getSecond());
startDateAndTime.set(Calendar.MILLISECOND, response.getStartTime().getMillisecond());
response.getStartDate()
返回XMLGregorianCalendar
是在多個線程中使用的傳入日曆對象嗎? – geert3 2014-12-09 12:23:39
請注意,您使用'String'作爲'%02d'格式的參數,該格式通常需要一個整數。 – geert3 2014-12-09 12:25:16
顯式沒有線程。它是一個Web應用程序的一部分。 – 2014-12-09 12:26:12