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")