, . 1.0 -1.25.
OLE, MSDN, . : https://msdn.microsoft.com/en-us/library/system.datetime.tooadate(v=vs.110).aspx
MSDN.
BigDecimal Joda LocalDateTime.
BigDecimal , float double, .
class COMDateToRegularDateConverter {
private static final LocalDateTime ZERO_COM_TIME = new LocalDateTime(1899, 12, 30, 0, 0);
private static final BigDecimal MILLIS_PER_DAY = new BigDecimal(86400000);
LocalDateTime toLocalDateTime(BigDecimal comTime) {
BigDecimal daysAfterZero = comTime.setScale(0, RoundingMode.DOWN);
BigDecimal fraction = comTime.subtract(daysAfterZero).abs();
BigDecimal fractionMillisAfterZero = fraction.multiply(MILLIS_PER_DAY).setScale(0, RoundingMode.HALF_DOWN);
return ZERO_COM_TIME.plusDays(daysAfterZero.intValue()).plusMillis(fractionMillisAfterZero.intValue());
}
}