日期高精度计算

This commit is contained in:
钱涛 2025-01-20 14:33:28 +08:00
parent 5e95742508
commit 1f93a7ae88
1 changed files with 5 additions and 5 deletions

View File

@ -164,7 +164,7 @@ public class DateTimeServiceImpl implements DateTimeService {
boolean checkType = true;
switch (type) {
case "Y":
time = DateTimeServiceImpl.getTime(startDate, endDate) / (nd.doubleValue()) / 365.0;
time = DateTimeServiceImpl.getTime(startDate, endDate) / (nd.doubleValue()) / 365.25;
break;
case "M":
Long monthR = DateTimeServiceImpl.getByField(cal1, cal2, Calendar.YEAR) * 12 + DateTimeServiceImpl.getByField(cal1, cal2, Calendar.MONTH);
@ -194,7 +194,7 @@ public class DateTimeServiceImpl implements DateTimeService {
return new DataType(DataType.STRING, "");
}
BigDecimal b = new BigDecimal(time);
double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
double f1 = b.setScale(2, BigDecimal.ROUND_DOWN).doubleValue();
result = f1;
return new DataType(DataType.NUMBER, result);
}
@ -1168,10 +1168,10 @@ public class DateTimeServiceImpl implements DateTimeService {
Long secondsL = null;
switch (type) {
case "Y":
secondsL = (long) (365 * 24 * 60 * 60 * 1000);
secondsL = (long) (365.25 * 24 * 60 * 60 * 1000);
break;
case "M":
secondsL = (long) (30 * 24 * 60 * 60 * 1000);
secondsL = (long) (30.4375 * 24 * 60 * 60 * 1000);
break;
case "D":
secondsL = (long) (24 * 60 * 60 * 1000);
@ -1318,7 +1318,7 @@ public class DateTimeServiceImpl implements DateTimeService {
double resutl;
switch (returnPattern) {
case "Y":
resutl = DateTimeServiceImpl.getTime(beginDate, endDate) / (24 * 60 * 60 * 1000) / 365.0;
resutl = DateTimeServiceImpl.getTime(beginDate, endDate) / (24 * 60 * 60 * 1000) / 365.25;
break;
case "M":
resutl = DateTimeServiceImpl.getByField(beginCalendar, endCalendar, Calendar.YEAR) * 12 + DateTimeServiceImpl.getByField(beginCalendar, endCalendar, Calendar.MONTH);