- /* package whatever; // don't place package name! */ 
-   
- import java.util.*; 
- import java.lang.*; 
- import java.io.*; 
-   
- import java.time.*; 
- import java.math.*; 
- import java.time.temporal.*; 
-   
- /* Name of the class has to be "Main" only if the class is public. */ 
- class Ideone 
- { 
- 	{ 
-         ZoneId z = ZoneId.of ( "America/Montreal" ); 
-         ZonedDateTime zdtStart = ZonedDateTime.of ( 2015 , 2 , 21 , 12 , 34 , 56 , 0 , z ); 
-         ZonedDateTime zdtStop = ZonedDateTime.of ( 2016 , 3 , 15 , 12 , 34 , 56 , 0 , z ); 
-   
-         Period p = Period.between ( zdtStart.toLocalDate () , zdtStop.toLocalDate () ); 
-         int years = p.getYears (); 
-   
-         ZonedDateTime zdtStartFractional = zdtStart.plusYears ( years ); 
-         Duration fractionalYear = Duration.between ( zdtStartFractional , zdtStop ); 
-         ZonedDateTime zdtFractionalYear_StartOfYear = zdtStartFractional.with ( TemporalAdjusters.firstDayOfYear () ).toLocalDate ().atStartOfDay ( z ); 
-         Duration wholeYear = Duration.between (zdtFractionalYear_StartOfYear , zdtFractionalYear_StartOfYear.plusYears ( 1 ) ); 
-   
-         BigDecimal-  ratio  =-  fractionalYearAsNanos. divide (-  wholeYearAsNanos ,  32-  , RoundingMode. HALF_EVEN );
 
-   
-         System- . out- . println (-  zdtStart  + "/" +-  zdtStop  );
 
-         System- . out- . println ( "Years: " +-  result. toPlainString () );
 
-   
-     } 
- } 
				LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgppbXBvcnQgamF2YS50aW1lLio7CmltcG9ydCBqYXZhLm1hdGguKjsKaW1wb3J0IGphdmEudGltZS50ZW1wb3JhbC4qOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKICAgICAgICBab25lSWQgeiA9IFpvbmVJZC5vZiAoICJBbWVyaWNhL01vbnRyZWFsIiApOwogICAgICAgIFpvbmVkRGF0ZVRpbWUgemR0U3RhcnQgPSBab25lZERhdGVUaW1lLm9mICggMjAxNSAsIDIgLCAyMSAsIDEyICwgMzQgLCA1NiAsIDAgLCB6ICk7CiAgICAgICAgWm9uZWREYXRlVGltZSB6ZHRTdG9wID0gWm9uZWREYXRlVGltZS5vZiAoIDIwMTYgLCAzICwgMTUgLCAxMiAsIDM0ICwgNTYgLCAwICwgeiApOwoKICAgICAgICBQZXJpb2QgcCA9IFBlcmlvZC5iZXR3ZWVuICggemR0U3RhcnQudG9Mb2NhbERhdGUgKCkgLCB6ZHRTdG9wLnRvTG9jYWxEYXRlICgpICk7CiAgICAgICAgaW50IHllYXJzID0gcC5nZXRZZWFycyAoKTsKCiAgICAgICAgWm9uZWREYXRlVGltZSB6ZHRTdGFydEZyYWN0aW9uYWwgPSB6ZHRTdGFydC5wbHVzWWVhcnMgKCB5ZWFycyApOwogICAgICAgIER1cmF0aW9uIGZyYWN0aW9uYWxZZWFyID0gRHVyYXRpb24uYmV0d2VlbiAoIHpkdFN0YXJ0RnJhY3Rpb25hbCAsIHpkdFN0b3AgKTsKICAgICAgICBab25lZERhdGVUaW1lIHpkdEZyYWN0aW9uYWxZZWFyX1N0YXJ0T2ZZZWFyID0gemR0U3RhcnRGcmFjdGlvbmFsLndpdGggKCBUZW1wb3JhbEFkanVzdGVycy5maXJzdERheU9mWWVhciAoKSApLnRvTG9jYWxEYXRlICgpLmF0U3RhcnRPZkRheSAoIHogKTsKICAgICAgICBEdXJhdGlvbiB3aG9sZVllYXIgPSBEdXJhdGlvbi5iZXR3ZWVuICh6ZHRGcmFjdGlvbmFsWWVhcl9TdGFydE9mWWVhciAsIHpkdEZyYWN0aW9uYWxZZWFyX1N0YXJ0T2ZZZWFyLnBsdXNZZWFycyAoIDEgKSApOwoKICAgICAgICBCaWdEZWNpbWFsIGZyYWN0aW9uYWxZZWFyQXNOYW5vcyA9IG5ldyBCaWdEZWNpbWFsICggZnJhY3Rpb25hbFllYXIudG9OYW5vcyAoKSApOwogICAgICAgIEJpZ0RlY2ltYWwgd2hvbGVZZWFyQXNOYW5vcyA9IG5ldyBCaWdEZWNpbWFsICggd2hvbGVZZWFyLnRvTmFub3MgKCkgKTsKICAgICAgICBCaWdEZWNpbWFsIHJhdGlvID0gZnJhY3Rpb25hbFllYXJBc05hbm9zLmRpdmlkZSAoIHdob2xlWWVhckFzTmFub3MgLCAzMiAsIFJvdW5kaW5nTW9kZS5IQUxGX0VWRU4gKTsKICAgICAgICBCaWdEZWNpbWFsIHJlc3VsdCA9IHJhdGlvLmFkZCAoIG5ldyBCaWdEZWNpbWFsICggeWVhcnMgKSApOwoKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCB6ZHRTdGFydCArICIvIiArIHpkdFN0b3AgKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4gKCAiWWVhcnM6ICIgKyByZXN1bHQudG9QbGFpblN0cmluZyAoKSApOwoKICAgIH0KfQ==