为什么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();
}
调试 用第一个cal.get执行第3行后(cal param的值已更改(到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 解决方法这是因为get的调用以宽松模式规范化Calendar,并在严格模式下验证它:
看起来您的Calendar对象处于宽松模式,因此执行规范化.规范化取决于日历实例. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
