This method queries this date-time using the provided query object and returns the query result of type R.
package com.logicbig.example.localtime;
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.chrono.Chronology;
import java.time.temporal.TemporalQueries;
import java.time.temporal.TemporalUnit;
public class QueryExample {
public static void main (String... args) {
LocalTime t = LocalTime.of(20, 10, 20, 5000);
TemporalUnit a = t.query(TemporalQueries.precision());
System.out.printf("precision: %s%n", a);
LocalTime t2 = t.query(TemporalQueries.localTime());
System.out.printf("localTime: %s%n", t2);
LocalDate d = t.query(TemporalQueries.localDate());
System.out.printf("localDate: %s%n", d);
ZoneOffset o = t.query(TemporalQueries.offset());
System.out.printf("ZoneOffset: %s%n", o);
ZoneId z = t.query(TemporalQueries.zone());
System.out.printf("zone: %s%n", z);
ZoneId i = t.query(TemporalQueries.zoneId());
System.out.printf("zoneId: %s%n", i);
Chronology c = t.query(TemporalQueries.chronology());
System.out.printf("chronology: %s%n", c);
}
}
Output
precision: Nanos
localTime: 20:10:20.000005
localDate: null
ZoneOffset: null
zone: null
zoneId: null
chronology: null
This example creates a custom TemporalQuery.
package com.logicbig.example.localtime;
import java.time.LocalTime;
import java.time.temporal.TemporalQuery;
public class QueryExample2 {
public static void main (String... args) {
LocalTime t = LocalTime.of(20, 10, 20, 5000);
Boolean b = t.query(WorkingHoursQuery);
System.out.printf("Is %s working time: %s%n", t, b);
t = LocalTime.of(15, 10, 20);
b = t.query(WorkingHoursQuery);
System.out.printf("Is %s working time: %s%n", t, b);
}
private static final TemporalQuery<Boolean> WorkingHoursQuery =
temporal -> {
LocalTime t = LocalTime.from(temporal);
return t.compareTo(LocalTime.of(9, 0)) >= 0 &&
t.compareTo(LocalTime.of(17, 0)) < 0;
};
}
Output
Is 20:10:20.000005 working time: false
Is 15:10:20 working time: true