Close

Java Date Time - LocalDateTime.query() Examples

Java Date Time Java Java API 


Class:

java.time.LocalDateTime

java.lang.Objectjava.lang.Objectjava.time.LocalDateTimejava.time.LocalDateTimejava.time.temporal.TemporalTemporaljava.time.temporal.TemporalAdjusterTemporalAdjusterjava.time.chrono.ChronoLocalDateTimeChronoLocalDateTimejava.io.SerializableSerializableLogicBig

Method:

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

This method queries this local date time using the provided query object and returns the query result of type R.



Examples


package com.logicbig.example.localdatetime;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
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) {
LocalDateTime dt = LocalDateTime.of(2016, 1, 1,
22, 20);
LocalDate d = dt.query(TemporalQueries.localDate());
System.out.println(d);

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

TemporalUnit u = dt.query(TemporalQueries.precision());
System.out.println(u);

Chronology c = dt.query(TemporalQueries.chronology());
System.out.println(c);

ZoneOffset z = dt.query(TemporalQueries.offset());
System.out.println(z);
}
}

Output

2016-01-01
22:20
Nanos
ISO
null




This example creates a custom TemporalQuery. It finds out if at given date time the stock market is open or not.

package com.logicbig.example.localdatetime;

import java.time.*;
import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.TemporalQuery;

public class QueryExample2 {

public static void main (String... args) {
LocalDateTime dt = LocalDateTime.of(2017, 1, 16,
14, 20);
Boolean b = dt.query(StockMarketQuery);
System.out.printf("Stock market is open at %s: %s%n",
dt, b);

dt = LocalDateTime.of(2017, 1, 20,
14, 17);
b = dt.query(StockMarketQuery);
System.out.printf("Stock market is open at %s: %s%n",
dt, b);


}

private static final TemporalQuery<Boolean> StockMarketQuery =
new TemporalQuery<Boolean>() {
@Override
public Boolean queryFrom (TemporalAccessor temporal) {
System.out.println("holiday: " + isHoliday(temporal));
return !isHoliday(temporal)
&& withinWorkingHours(temporal);
}

private boolean withinWorkingHours (TemporalAccessor temporal) {
LocalTime localTime = LocalTime.from(temporal);
LocalTime open = LocalTime.of(9, 30);
LocalTime close = LocalTime.of(16, 0);
return localTime.compareTo(open) >= 0
&& localTime.compareTo(close) < 0;
}

private boolean isHoliday (TemporalAccessor temporal) {
LocalDate d = LocalDate.from(temporal);

return (d.getDayOfMonth() == 1
&& d.getMonth() == Month.JANUARY)//new year
||
(d.getMonth() == Month.JANUARY &&
d.with(TemporalAdjusters.dayOfWeekInMonth(
3, DayOfWeek.MONDAY))
.getDayOfMonth() == d.getDayOfMonth())//Martin luther day
//todo add more including weekends
;
}
};
}

Output

holiday: true
Stock market is open at 2017-01-16T14:20: false
holiday: false
Stock market is open at 2017-01-20T14:17: true




See Also