Skip to main content
Version: Java (Groovy)

lowerBin

lowerBin returns a date-time value, which is at the starting (lower) end of a time range defined by the interval. For example, calculating the lower bin of a time given a 15-minute interval value would return the date-time value for the start of the fifteen-minute window (00-15, 15-30, 30-45, 45-60) that contains the input date-time.

Syntax

lowerBin(instant, intervalNanos)
lowerBin(instant, interval)
lowerBin(dateTime, intervalNanos)
lowerBin(dateTime, interval)
lowerBin(instant, intervalNanos, offset)
lowerBin(instant, interval, offset)
lowerBin(dateTime, intervalNanos, offset)
lowerBin(dateTime, interval, offset)

Parameters

ParameterTypeDescription
instantInstant

The date-time for which to evaluate the start of the containing window.

dateTimeZonedDateTime

The date-time for which to evaluate the start of the containing window.

intervalNanoslong

The time interval represented as nanoseconds. If this parameter is used, the offset parameter must also be in nanoseconds.

intervalDuration

The time interval represented as a Duration. If this parameter is used, the offset parameter must also be a Duration.

offsetlong

The window start offset in nanoseconds. For example, a value of MINUTE would offset all windows by one minute.

offsetDuration

The window start offset as a Duration. For example, a value of "PT1M" would offset all windows by one minute.

Returns

A date-time representing the start of the window.

Example

The following example converts a date-time to the lower end of a 15-minute interval. Output is shown for no offset, and an offset of 2 minutes.

import io.deephaven.time.DateTimeUtils
datetime = parseInstant("2020-01-01T00:35:00 ET")
nanos_bin = MINUTE * 15
nanos_offset = MINUTE * 2
duration_bin = parseDuration("PT15M")
duration_offset = parseDuration("PT2M")

// no offset
result1 = DateTimeUtils.lowerBin(datetime, nanos_bin)
println result1

// offset of two minutes
result2 = DateTimeUtils.lowerBin(datetime, nanos_bin, nanos_offset)
println result2

// repeat result2, but with duration types
result2_durations = DateTimeUtils.lowerBin(datetime, duration_bin, duration_offset)
println result2_durations