Close

Java Date Time - LocalDate.query() Examples

Java Date Time Java Java API 


Class:

java.time.LocalDate

java.lang.Objectjava.lang.Objectjava.time.LocalDatejava.time.LocalDatejava.time.temporal.TemporalTemporaljava.time.temporal.TemporalAdjusterTemporalAdjusterjava.time.chrono.ChronoLocalDateChronoLocalDatejava.io.SerializableSerializableLogicBig

Method:

public <R> R query(TemporalQuery<R> query)

This method queries this local date using the provided query object.


Examples


package com.logicbig.example.localdate;

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.temporal.TemporalQueries;
import java.time.temporal.TemporalUnit;

public class QueryExample {

public static void main (String... args) {
LocalDate d = LocalDate.of(2004, 11, 14);
TemporalUnit p = d.query(TemporalQueries.precision());
System.out.println(p);

LocalTime t = d.query(TemporalQueries.localTime());
System.out.println(t);
}
}

Output

Days
null




This example finds out coming labor day date for the provided local date. It uses a custom TemporalQuery.

package com.logicbig.example.localdate;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.Month;
import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.TemporalQuery;

public class QueryExample2 {

public static void main (String... args) {
LocalDate d = LocalDate.of(2017, 9, 1);
LocalDate nextLaborDay = d.query(LaborDayQuery);
System.out.println(nextLaborDay);

d = LocalDate.of(2017, 9, 4);
nextLaborDay = d.query(LaborDayQuery);
System.out.println(nextLaborDay);

d = LocalDate.of(2017, 9, 5);
nextLaborDay = d.query(LaborDayQuery);
System.out.println(nextLaborDay);
}

private static final TemporalQuery<LocalDate> LaborDayQuery =
new TemporalQuery<LocalDate>() {

private LocalDate getFirstMondayOfSeptember (LocalDate d) {
LocalDate september = d.withMonth(Month.SEPTEMBER
.getValue());
return september.with(TemporalAdjusters.firstInMonth(
DayOfWeek.MONDAY));
}

@Override
public LocalDate queryFrom (TemporalAccessor temporal) {
LocalDate d = LocalDate.from(temporal);
LocalDate d2 = getFirstMondayOfSeptember(d);
if (d.isAfter(d2)) {
d2 = getFirstMondayOfSeptember(d2.plusYears(1));
}
return d2;
}
};
}

Output

2017-09-04
2017-09-04
2018-09-03




See Also