我有一个带有以下签名的静态方法:
private static volatile SimpleDateFormat payDayFormat = new SimpleDateFormat("yyyyMMdd");
public static int overdueDays(String repayDay){
try {
Date billDate = payDayFormat.parse(repayDay);
Calendar startDate = Calendar.getInstance();
startDate.setTime(billDate);
Calendar endDate = Calendar.getInstance();
long end = endDate.getTimeInMillis();
long start = startDate.getTimeInMillis();
Long days = TimeUnit.MILLISECONDS.toDays(Math.abs(end - start));
return days.intValue();
} catch (ParseException e) {
logger.error("判断是否逾期解析时间出错");
}
return 0;
}
当同一个参数同时对上述方法进行多次调用时,结果不同.
56
56
1279716
56
56
56
5
736387
56
-1226645849
56
只有56才是正确答案.
但是当我用Joda-Time替换Calendar时,它会返回正确的答案.如何在不使用Joda-Time或锁定,解锁并获得正确答案的情况下更改此代码.