This example uses implementations of TemporalQuery provided in class TemporalQueries.
package com.logicbig.example.offsettime;
import java.time.LocalTime;
import java.time.OffsetTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.temporal.TemporalQueries;
import java.time.temporal.TemporalUnit;
public class QueryExample {
public static void main(String... args) {
OffsetTime d = OffsetTime.of(18, 20, 30, 100,
ZoneOffset.ofHours(-6));
LocalTime t = d.query(TemporalQueries.localTime());
System.out.println(t);
ZoneOffset z = d.query(TemporalQueries.offset());
System.out.println(z);
TemporalUnit p = d.query(TemporalQueries.precision());
System.out.println(p);
ZoneId z2 = d.query(TemporalQueries.zone());
System.out.println(z2);
}
}
Output
18:20:30.000000100
-06:00
Nanos
-06:00
A custom TemporalQuery example.
package com.logicbig.example.offsettime;
import java.time.LocalTime;
import java.time.OffsetTime;
import java.time.ZoneOffset;
import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalQuery;
public class QueryExample2 {
public static void main(String... args) {
OffsetTime d = OffsetTime.of(11, 55, 30, 100,
ZoneOffset.ofHours(-4));
Boolean b = d.query(ValidTimeQuery);
System.out.println(b);
}
public static final TemporalQuery<Boolean> ValidTimeQuery = new TemporalQuery<Boolean>() {
@Override
public Boolean queryFrom(TemporalAccessor temporal) {
//check if the underlying time is in afternoon.
OffsetTime t = OffsetTime.from(temporal);
OffsetTime noon = OffsetTime.of(LocalTime.NOON, t.getOffset());
return t.isAfter(noon);
}
};
}
Output
false