Duration
@Serializable { simple=true }
const class Duration : Obj
Duration represents a relative duration of time with nanosecond precision.
Also see docLang.
Parse a Str into a Duration according to the Fantom literal format
Create a Duration which represents the specified number of nanosecond ticks
Default value is 0ns
Max value is equivalent to make(Int.maxVal)
Min value is equivalent to make(Int.minVal)
Absolute value - if this is a negative duration, then return its positive value
Get the system timer at boot time of the Fantom VM
Clamp this duration between the min and max
Compare based on nanosecond ticks
Divide this by b
Divide this by b
Return true if same number nanosecond ticks
Return a new Duration with this duration's nanosecond ticks truncated according to the specified accuracy
Parse a duration according to ISO 8601
Return ticks()
Return the maximum duration between this and that
Return the minimum duration between this and that
Subtract b from this
Multiply this with b
Multiply this with b
Negative of this
Get the current value of the system timer
Convenience for now.ticks
Add this with b
Return number of nanosecond ticks
Get this Duration as a Fantom code literal
Get this duration in 24 hour days
Get this duration in hours
Format this duration according to ISO 8601
Return human friendly string representation
Get this duration in milliseconds
Get this duration in minutes
Get this duration in seconds
Return string representation of the duration which is a valid duration literal format suitable for decoding via fromStr
Get the duration which has elapsed since the
Fantom VM was booted which is now - boot
Duration abs()
Absolute value - if this is a negative duration, then return its positive value.
static Duration boot()
Get the system timer at boot time of the Fantom VM.
Duration clamp(Duration min, Duration max)
Clamp this duration between the min and max. If it's less than min then return min, if it's greater than max return max, otherwise return this duration itself.
virtual Int compare(Obj obj)
Compare based on nanosecond ticks.
const static Duration : defVal
Default value is 0ns.
@Operator
Duration div(Int b)
Divide this by b. Shortcut is a/b.
@Operator
Duration divFloat(Float b)
Divide this by b. Shortcut is a/b.
virtual Bool equals(Obj? obj)
Return true if same number nanosecond ticks.
Duration floor(Duration accuracy)
Return a new Duration with this duration's nanosecond
ticks truncated according to the specified accuracy.
For example floor(1min) will truncate this duration
such that its seconds are 0.0.
static Duration fromIso(Str s, Bool checked := true)
Parse a duration according to ISO 8601. If invalid format and checked is false return null, otherwise throw ParseErr. The following restrictions are enforced:
- Cannot specify a
Yyear orMmonth component since it is ambiguous - Only the
Sseconds component may include a fraction - Only nanosecond resolution is supported See toIso for example formats.
static new fromStr(Str s, Bool checked := true)
Parse a Str into a Duration according to the Fantom literal format. If invalid format and checked is false return null, otherwise throw ParseErr. The following suffixes are supported:
ns: nanoseconds (x 1)
ms: milliseconds (x 1,000,000)
sec: seconds (x 1,000,000,000)
min: minutes (x 60,000,000,000)
hr: hours (x 3,600,000,000,000)
day: days (x 86,400,000,000,000)
Examples:
Duration.fromStr("4ns")
Duration.fromStr("100ms")
Duration.fromStr("-0.5hr")
virtual Int hash()
Return ticks().
static new make(Int ticks)
Create a Duration which represents the specified number of nanosecond ticks.
Duration max(Duration that)
Return the maximum duration between this and that.
const static Duration : maxVal
Max value is equivalent to make(Int.maxVal).
Duration min(Duration that)
Return the minimum duration between this and that.
const static Duration : minVal
Min value is equivalent to make(Int.minVal).
@Operator
Duration minus(Duration b)
Subtract b from this. Shortcut is a-b.
@Operator
Duration mult(Int b)
Multiply this with b. Shortcut is a*b.
@Operator
Duration multFloat(Float b)
Multiply this with b. Shortcut is a*b.
@Operator
Duration negate()
Negative of this. Shortcut is -a.
static Duration now()
Get the current value of the system timer. This method returns a relative time unrelated to system or wall-clock time. Typically it is the number of nanosecond ticks which have elapsed since system startup.
static Int nowTicks()
Convenience for now.ticks.
@Operator
Duration plus(Duration b)
Add this with b. Shortcut is a+b.
Int ticks()
Return number of nanosecond ticks.
Str toCode()
Get this Duration as a Fantom code literal.
Int toDay()
Get this duration in 24 hour days. Any fractional days are truncated with a loss of precision.
Int toHour()
Get this duration in hours. Any fractional hours are truncated with a loss of precision.
Str toIso()
Format this duration according to ISO 8601. Also see fromIso.
Examples:
8ns.toIso => PT0.000000008S
100ms.toIso => PT0.1S
(-20sec).toIso => -PT20S
3.5min.toIso => PT3M30S
1day.toIso => PT24H
(1day+2hr+3min).toIso => P1DT2H3M
Str toLocale()
Return human friendly string representation. TODO: enhance this for pattern
Int toMillis()
Get this duration in milliseconds. Any fractional milliseconds are truncated with a loss of precision.
Int toMin()
Get this duration in minutes. Any fractional minutes are truncated with a loss of precision.
Int toSec()
Get this duration in seconds. Any fractional seconds are truncated with a loss of precision.
virtual Str toStr()
Return string representation of the duration which is a valid duration literal format suitable for decoding via fromStr.
static Duration uptime()
Get the duration which has elapsed since the
Fantom VM was booted which is now - boot.