package com.levelup.java.date.query; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.time.LocalDate; import java.time.Month; import java.time.MonthDay; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalQuery; import org.junit.Test; /** * This java example will show how to check if a date * or temporal is during hurricane season. * * @author Justin Musgrove * @see <a href='http://www.leveluplunch.com/java/examples/hurricane-season-temporal-query-java8/'>Hurricane season query</a> */ public class HurricaneSeasonQuery implements TemporalQuery<Boolean> { /* (non-Javadoc) * @see java.time.temporal.TemporalQuery#queryFrom(java.time.temporal.TemporalAccessor) */ @Override public Boolean queryFrom(TemporalAccessor temporal) { LocalDate date = LocalDate.from(temporal); MonthDay juneFirst = MonthDay.of(Month.JUNE.getValue(), 1); MonthDay novemberThirty = MonthDay.of(Month.NOVEMBER.getValue(), 30); if (date.isAfter(juneFirst.atYear(date.getYear())) && date.isBefore(novemberThirty.atYear(date.getYear()))) { return true; } else { return false; } } @Test public void is_before_hurricane_season () { LocalDate date = LocalDate.of(2014, Month.JANUARY, 02); Boolean isHurricaneSeason = date.query(new HurricaneSeasonQuery()); assertFalse(isHurricaneSeason); } @Test public void is_during_hurricane_season () { LocalDate date = LocalDate.of(2014, Month.JUNE, 30); Boolean isHurricaneSeason = date.query(new HurricaneSeasonQuery()); assertTrue(isHurricaneSeason); } @Test public void is_after_hurricane_season () { LocalDate date = LocalDate.of(2014, Month.DECEMBER, 30); Boolean isHurricaneSeason = date.query(new HurricaneSeasonQuery()); assertFalse(isHurricaneSeason); } }