ESC
Type to search...
S
Soli Docs

Duration

Represent and manipulate time durations with a fluent API.

The Duration class represents a span of time. Create durations using static factory methods, then convert them to different units as needed.

Creating Durations

Duration.seconds(n)

Create a duration from a number of seconds.

Parameters

n : Int - Number of seconds

Returns

Duration - A Duration instance
timeout = Duration.seconds(30)
one_minute = Duration.seconds(60)
Duration.minutes(n)

Create a duration from a number of minutes.

Parameters

n : Int - Number of minutes

Returns

Duration - A Duration instance
break_time = Duration.minutes(15)
hour = Duration.minutes(60)
Duration.hours(n)

Create a duration from a number of hours.

Parameters

n : Int - Number of hours

Returns

Duration - A Duration instance
work_day = Duration.hours(8)
session_timeout = Duration.hours(1)
Duration.days(n)

Create a duration from a number of days.

Parameters

n : Int - Number of days

Returns

Duration - A Duration instance
week = Duration.days(7)
trial_period = Duration.days(30)

Converting Durations

.total_seconds()

Get the total duration in seconds.

Returns

Float - Total seconds
duration = Duration.hours(2)
println(duration.total_seconds())  # 7200
.total_minutes()

Get the total duration in minutes.

Returns

Float - Total minutes
duration = Duration.hours(2)
println(duration.total_minutes())  # 120
.total_hours()

Get the total duration in hours.

Returns

Float - Total hours
duration = Duration.days(1)
println(duration.total_hours())  # 24
.total_days()

Get the total duration in days.

Returns

Float - Total days
duration = Duration.weeks(1)
println(duration.total_days())  # 7
.to_string

Get the duration as a formatted string.

Returns

String - Formatted duration (e.g., "7200s")
duration = Duration.of_seconds(3661)
println(duration.to_string)  # "3661s"
.humanize(locale?)

Get the duration as a human-readable compound string (e.g., "1 hour 1 minute"). Selects the most appropriate unit(s) based on the duration length.

Parameters

locale : String? - Optional locale code (defaults to current I18n locale)

Returns

String - Humanized duration string
Duration.seconds(3661).humanize()   # "1 hour 1 minute"
Duration.seconds(1000).humanize()  # "16 minutes 40 seconds"
Duration.seconds(7200).humanize()  # "2 hours"
Duration.seconds(90).humanize()    # "1 minute 30 seconds"
Duration.minutes(5).humanize()      # "5 minutes"

Complete Example

# Create durations
timeout = Duration.seconds(30)
break_time = Duration.minutes(15)
work_day = Duration.hours(8)
trial = Duration.days(7)

# Convert to different units
println("Timeout: " + timeout.total_seconds() + " seconds")
println("Break: " + break_time.total_minutes() + " minutes")
println("Work day: " + work_day.total_hours() + " hours")
println("Trial: " + trial.total_days() + " days")

# Practical example: session expiry
session_duration = Duration.hours(1)
expiry_seconds = session_duration.total_seconds()
println("Session expires in " + expiry_seconds + " seconds")