/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.time.* ;
import java.time.temporal.* ;
import java.time.format.* ;
import java.math.BigDecimal;
import java.math.MathContext;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
//LocalDate start = myResultSet.getObject( … , LocalDate.class ) ; // Retrieve a `LocalDate` from database using JDBC 4.2 and later.
LocalDate start = LocalDate.of( 2018 , Month.JANUARY , 23 );
LocalDate stop = start.plusDays( 101 );
Period p = Period.between( start , stop );
long months = p.toTotalMonths();
int days = p.getDays();
BigDecimal fractionalMonth
= bdDays.
divide( bdMaximumDaysInMonth , MathContext.
DECIMAL32 );
double d = bd.round( MathContext.DECIMAL32 ).doubleValue();
System.
out.
println( "From: " + start
+ " to: " + stop
+ " = " + bd
+ " months, using BigDecimal. As a double: " + d
); System.
out.
println( "p.toString(): " + p
);
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbXBvcnQgamF2YS50aW1lLiogOwppbXBvcnQgamF2YS50aW1lLnRlbXBvcmFsLiogOwppbXBvcnQgamF2YS50aW1lLmZvcm1hdC4qIDsKCmltcG9ydCBqYXZhLm1hdGguQmlnRGVjaW1hbDsKaW1wb3J0IGphdmEubWF0aC5NYXRoQ29udGV4dDsKCi8qIE5hbWUgb2YgdGhlIGNsYXNzIGhhcyB0byBiZSAiTWFpbiIgb25seSBpZiB0aGUgY2xhc3MgaXMgcHVibGljLiAqLwpjbGFzcyBJZGVvbmUKewoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgogICAgICAgIC8vTG9jYWxEYXRlIHN0YXJ0ID0gbXlSZXN1bHRTZXQuZ2V0T2JqZWN0KCDigKYgLCBMb2NhbERhdGUuY2xhc3MgKSA7ICAvLyBSZXRyaWV2ZSBhIGBMb2NhbERhdGVgIGZyb20gZGF0YWJhc2UgdXNpbmcgSkRCQyA0LjIgYW5kIGxhdGVyLgogICAgICAgIExvY2FsRGF0ZSBzdGFydCA9IExvY2FsRGF0ZS5vZiggMjAxOCAsIE1vbnRoLkpBTlVBUlkgLCAyMyApOwogICAgICAgIExvY2FsRGF0ZSBzdG9wID0gc3RhcnQucGx1c0RheXMoIDEwMSApOwoKICAgICAgICBQZXJpb2QgcCA9IFBlcmlvZC5iZXR3ZWVuKCBzdGFydCAsIHN0b3AgKTsKICAgICAgICBsb25nIG1vbnRocyA9IHAudG9Ub3RhbE1vbnRocygpOwogICAgICAgIGludCBkYXlzID0gcC5nZXREYXlzKCk7CgogICAgICAgIEJpZ0RlY2ltYWwgYmREYXlzID0gbmV3IEJpZ0RlY2ltYWwoIGRheXMgKTsKICAgICAgICBCaWdEZWNpbWFsIGJkTWF4aW11bURheXNJbk1vbnRoID0gbmV3IEJpZ0RlY2ltYWwoIDMxICk7CiAgICAgICAgQmlnRGVjaW1hbCBmcmFjdGlvbmFsTW9udGggPSBiZERheXMuZGl2aWRlKCBiZE1heGltdW1EYXlzSW5Nb250aCAsIE1hdGhDb250ZXh0LkRFQ0lNQUwzMiApOwogICAgICAgIEJpZ0RlY2ltYWwgYmQgPSBuZXcgQmlnRGVjaW1hbCggbW9udGhzICkuYWRkKCBmcmFjdGlvbmFsTW9udGggKTsKCiAgICAgICAgZG91YmxlIGQgPSBiZC5yb3VuZCggTWF0aENvbnRleHQuREVDSU1BTDMyICkuZG91YmxlVmFsdWUoKTsKCiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCAiRnJvbTogIiArIHN0YXJ0ICsgIiB0bzogIiArIHN0b3AgKyAiID0gIiArIGJkICsgIiBtb250aHMsIHVzaW5nIEJpZ0RlY2ltYWwuIEFzIGEgZG91YmxlOiAiICsgZCApOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbiggInAudG9TdHJpbmcoKTogIiArIHAgKTsKICAgICAgICAKICAgICAgICAKCX0KfQ==