Example shows how to find the last day of quarter using Java 8 adjuster. The TemporalAdjuster interface, in the java.time.temporal package, adjustInto method accepts a temporal value and returns an adjusted value. The adjustInto method will evaluate the passed-in date to determine quarter and then return the last day of the quarter.
Setup public class LastDayOfQuarter implements TemporalAdjuster {
@Override
public Temporal adjustInto ( Temporal temporal ) {
int currentQuarter = YearMonth . from ( temporal ). get (
IsoFields . QUARTER_OF_YEAR );
if ( currentQuarter == 1 ) {
return LocalDate . from ( temporal ). withMonth ( Month . MARCH . getValue ())
. with ( TemporalAdjusters . lastDayOfMonth ());
} else if ( currentQuarter == 2 ) {
return LocalDate . from ( temporal ). withMonth ( Month . JUNE . getValue ())
. with ( TemporalAdjusters . lastDayOfMonth ());
} else if ( currentQuarter == 3 ) {
return LocalDate . from ( temporal )
. withMonth ( Month . SEPTEMBER . getValue ())
. with ( TemporalAdjusters . lastDayOfMonth ());
} else {
return LocalDate . from ( temporal ). with (
TemporalAdjusters . lastDayOfYear ());
}
}
}
Last day of first quarter @Test
public void first_quarter_last_day () {
LocalDate date = LocalDate . of ( 2009 , Month . FEBRUARY , 1 );
LocalDate firstQuarter = date . with ( new LastDayOfQuarter ());
assertEquals ( LocalDate . of ( 2009 , Month . MARCH , 31 ), firstQuarter );
}
Last day of second quarter @Test
public void second_quarter_last_day () {
LocalDate date = LocalDate . of ( 2009 , Month . MAY , 1 );
LocalDate secondQuarter = date . with ( new LastDayOfQuarter ());
assertEquals ( LocalDate . of ( 2009 , Month . JUNE , 30 ), secondQuarter );
}
Last day of third quarter @Test
public void third_quarter_last_day () {
LocalDate date = LocalDate . of ( 2009 , Month . AUGUST , 1 );
LocalDate thirdQuarter = date . with ( new LastDayOfQuarter ());
assertEquals ( LocalDate . of ( 2009 , Month . SEPTEMBER , 30 ), thirdQuarter );
}
Last day of fourth quarter @Test
public void fourth_quarter_first_day () {
LocalDate date = LocalDate . of ( 2009 , Month . NOVEMBER , 1 );
LocalDate fourthQuarter = date . with ( new LastDayOfQuarter ());
assertEquals ( LocalDate . of ( 2009 , Month . DECEMBER , 31 ), fourthQuarter );
}
Last day of quarter adjuster posted by Justin Musgrove on 05 February 2014
Tagged: java, java-date, and java-date-adjuster
Share on: Facebook Google+
All the code on this page is available on github:
LastDayOfQuarterAdjuster.java