I would like to get the 15 minutes timeframe based on Current Time.
For example:
Timeframe is for every 15 minutes
.
i.e 12 to 1 is divided into four timeframes [ 12:00 to 12:15, 12:16 to 12:30, 1:31 to 12:45, 12:46 to 1:00]
If the current time is 12:34
means, i need to return the timeframe as 12:31 to 12:45
Is it something we can do easily with Java 8 Date and Time API?
You could create a TemporalAdjuster
that calculates the end of the current 15-minute period and calculate the start of the period by removing 14 minutes.
Could look like this:
public static void main(String[] args) {
LocalTime t = LocalTime.of(12, 34);
LocalTime next15 = t.with(next15Minute());
System.out.println(next15.minusMinutes(14) + " - " + next15);
}
public static TemporalAdjuster next15Minute() {
return (temporal) -> {
int minute = temporal.get(ChronoField.MINUTE_OF_DAY);
int next15 = (minute / 15 + 1) * 15;
return temporal.with(ChronoField.NANO_OF_DAY, 0).plus(next15, ChronoUnit.MINUTES);
};
}
which outputs 12:31 - 12-45
.
Note: I'm not sure how it behaves around DST changes - to be tested.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With