package com.logicbig.example.instant;
import java.time.Instant;
import java.time.temporal.TemporalQueries;
import java.time.temporal.TemporalUnit;
public class QueryExample {
public static void main(String... args) {
Instant i = Instant.now();
System.out.println(i);
TemporalUnit query = i.query(TemporalQueries.precision());
System.out.println(query);
}
}
Output
2017-05-01T20:57:09.883Z
Nanos
A custom TemporalQuery example.
package com.logicbig.example.instant;
import java.time.*;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalQuery;
public class QueryExample2 {
public static void main(String... args) {
Instant i = Instant.now();
System.out.println(i);
Duration d = i.query(durationSince2010Query);
System.out.println(d);
}
public static final TemporalQuery<Duration> durationSince2010Query = new TemporalQuery<Duration>() {
long since2010 = LocalDate.of(2010, 01, 01).atStartOfDay().toEpochSecond(ZoneOffset.UTC);
@Override
public Duration queryFrom(TemporalAccessor temporal) {
if (temporal.isSupported(ChronoField.INSTANT_SECONDS)) {
long l = temporal.getLong(ChronoField.INSTANT_SECONDS);
return Duration.of(l -since2010, ChronoUnit.SECONDS);
}
return null;
}
};
}
Output
2017-05-01T20:57:11.931Z
PT64268H57M11S