Java Reference
In-Depth Information
import static java.time.temporal.ChronoField.DAY_OF_MONTH;
import static java.time.temporal.ChronoField.DAY_OF_WEEK;
import static java.time.DayOfWeek.FRIDAY;
public class Friday13Query implements TemporalQuery<Boolean> {
public final static Friday13Query IS_FRIDAY_13 = new Friday13Query();
// Prevent outside code from creating objects of this class
private Friday13Query() {}
@Override
public Boolean queryFrom(TemporalAccessor temporal) {
if (temporal.isSupported(DAY_OF_MONTH) && temporal.isSupported(DAY_OF_WEEK)) {
int dayOfMonth = temporal.get(DAY_OF_MONTH);
int weekDay = temporal.get(DAY_OF_WEEK);
DayOfWeek dayOfWeek = DayOfWeek.of(weekDay);
if (dayOfMonth == 13 && dayOfWeek == FRIDAY) {
return Boolean.TRUE;
}
}
return Boolean.FALSE;
}
}
The following snippet of code uses the
Friday13Query
with three datetime objects. The first
LocalDate
falls on
Friday 13, as you can see in the output that the query returns true.
LocalDate ld1 = LocalDate.of(2013, 12, 13);
Boolean isFriday13 = ld1.query(Friday13Query.IS_FRIDAY_13);
System.out.println("Date: " + ld1 + ", isFriday13: " + isFriday13);
LocalDate ld2 = LocalDate.of(2014, 1, 10);
isFriday13 = ld2.query(Friday13Query.IS_FRIDAY_13);
System.out.println("Date: " + ld2 + ", isFriday13: " + isFriday13);
LocalTime lt = LocalTime.of(7, 30, 45);
isFriday13 = lt.query(Friday13Query.IS_FRIDAY_13);
System.out.println("Time: " + lt + ", isFriday13: " + isFriday13);
Date: 2013-12-13, isFriday13: true
Date: 2014-01-10, isFriday13: false
Time: 07:30:45, isFriday13: false
Listing 12-20 contains the code for a
CustomQueries
class. The class contains a static method
isFriday13()
.
The method reference for
isFriday13()
method can be used as a query.