В настоящее время я работаю над проблемой, когда DateTime.addMonths(iStartDateH, durationAsInt) добавляет дополнительный день. Он использует GeorgianCalendar для внутреннего использования. В настоящее время мы используем Java 5 в этом проекте. Например: в течение 24 месяцев.
ExpirationDate=DateTime.addMonths(currentDate, 24)
CurrentDate= 01/02/2021 (dd/mm/yyyy format)
ExpirationDate= 02/02/2023
public static ErrorCode addMonths(DateHolder dateH, int numMonths) {
try {
Calendar c = new GregorianCalendar();
c.setTime(dateH.value);
c.add(Calendar.MONTH, numMonths);
dateH.value = c.getTime();
return ErrorCode.successCN;
}
catch (Exception e) {
IlMessage msg = new IlMessage(Msg.exceptionCaughtCN, e);
IlSession.getSession().getMessageStack().push(msg);
return ErrorCode.errorCN;
}
}
Я попытался проверить полную разницу в дате/времени, и она пришла как 730.773935185185185. Пожалуйста, помогите с тем же.
DateTime
, о котором вы говорите?java.time.LocalDateTime
?java.util.Date
? Можете ли вы дать его полное название? - person Sweeper   schedule 03.02.2021DateHolder
вашим собственным классом или классом из какой-то сторонней библиотеки? Который из? - person Ole V.V.   schedule 03.02.2021DateHolder
классом. Без него мы не можем сказать, в чем проблема. Я проверил добавление месяцев с помощьюGregorianCalendar
и не могу воспроизвести аномалию, которую вы наблюдаете. - person MC Emperor   schedule 03.02.2021DateHolder
содержит полеpublic
, что обычно не рекомендуется . Кроме того, я думаю, вам следует рассмотреть возможность использования неизменяемых объектов. - person MC Emperor   schedule 03.02.2021