class

Time

@Serializable { simple=true }
const class Time : Obj

Time represents a time of day independent of a specific date or timezone.

constructors fromStr

Parse the string into a Time from the programmatic encoding defined by toStr

make

Make for the specified time values

fields defVal

Default value is "00:00:00"

methods toStr

Return programmatic ISO 8601 string encoding formatted as follows

minus

Subtract the specified duration to this time

compare

Compare based on hour, min, sec, and ns values

toLocale

Format this date according to the specified pattern

fromLocale

Parse a string into a Time using the given pattern

toCode

Get this Time as a Fantom expression suitable for code generation

fromDuration

Translate a duration of time which has elapsed since midnight into a Time of day

nanoSec

Get the number of nanoseconds (the fraction of seconds) as a number between 0 and 999,999,999

fromIso

Parse an ISO 8601 time

plus

Add the specified duration to this time

isMidnight

Return if "00:00:00" which is equal to defVal

sec

Get the whole seconds of the time as a number between 0 and 59

min

Get the minutes of the time as a number between 0 and 59

hour

Get the hour of the time as a number between 0 and 23

equals

Two times are equal if have identical hour, min, sec, and ns values

now

Get the current time using the specified timezone

toIso

Format this instance according to ISO 8601 using the pattern

toDuration

Return the duration of time which has elapsed since midnight

hash

Return hash of hour, min, sec, and ns values

toDateTime

Combine this Time with the given Date to return a DateTime

compare virtual Int compare(Obj obj)

Compare based on hour, min, sec, and ns values.

defVal const static Time : defVal

Default value is "00:00:00".

equals virtual Bool equals(Obj? that)

Two times are equal if have identical hour, min, sec, and ns values.

fromDuration static Time fromDuration(Duration d)

Translate a duration of time which has elapsed since midnight into a Time of day. See toDuration. If the duration is not between 0 and 24hr throw ArgErr.

Example:

Time.fromDuration(150min)  =>  02:30:00

fromIso static Time? fromIso(Str s, Bool checked)

Parse an ISO 8601 time. If invalid format and checked is false return null, otherwise throw ParseErr. The following format is supported:

hh:mm:ss.FFFFFFFFF

Also see toIso and fromStr.

fromLocale static Time? fromLocale(Str str, Str pattern, Bool checked)

Parse a string into a Time using the given pattern. If string is not a valid format then return null or raise ParseErr based on checked flag. See toLocale for pattern syntax.

fromStr static new fromStr(Str s, Bool checked)

Parse the string into a Time from the programmatic encoding defined by toStr. If the string cannot be parsed into a valid Time and checked is false then return null, otherwise throw ParseErr.

hash virtual Int hash()

Return hash of hour, min, sec, and ns values.

hour Int hour()

Get the hour of the time as a number between 0 and 23.

isMidnight Bool isMidnight()

Return if "00:00:00" which is equal to defVal.

make static new make(Int hour, Int min, Int sec, Int ns)

Make for the specified time values:

  • hour: 0-23
  • min: 0-59
  • sec: 0-59
  • ns: 0-999_999_999

Throw ArgErr if any of the parameters are out of range.

min Int min()

Get the minutes of the time as a number between 0 and 59.

minus @Operator
Time minus(Duration dur)

Subtract the specified duration to this time. Throw ArgErr if dur is not between 0 and 24hr. Overflows will rollover.

Example:

Time(5,0,0) - 30min  =>  04:30:00

nanoSec Int nanoSec()

Get the number of nanoseconds (the fraction of seconds) as a number between 0 and 999,999,999.

now static Time now(TimeZone tz)

Get the current time using the specified timezone. This method may use DateTime.now with the default tolerance 250ms.

plus @Operator
Time plus(Duration dur)

Add the specified duration to this time. Throw ArgErr if dur is not between 0 and 24hr. Overflows will rollover.

Example:

Time(5,0,0) + 30min  =>  05:30:00

sec Int sec()

Get the whole seconds of the time as a number between 0 and 59.

toCode Str toCode()

Get this Time as a Fantom expression suitable for code generation.

toDateTime DateTime toDateTime(Date d, TimeZone tz)

Combine this Time with the given Date to return a DateTime.

toDuration Duration toDuration()

Return the duration of time which has elapsed since midnight. See fromDuration.

Example:

Time(2, 30).toDuration  =>  150min

toIso Str toIso()

Format this instance according to ISO 8601 using the pattern:

hh:mm:ss.FFFFFFFFF

Also see fromIso and toStr.

toLocale Str toLocale(Str? pattern, Locale locale)

Format this date according to the specified pattern. If pattern is null, then a localized default is used. The pattern format is the same as DateTime.toLocale:

h      One digit 24 hour (0-23)   3, 22
hh     Two digit 24 hour (0-23)   03, 22
k      One digit 12 hour (1-12)   3, 11
kk     Two digit 12 hour (1-12)   03, 11
m      One digit minutes (0-59)   4, 45
mm     Two digit minutes (0-59)   04, 45
s      One digit seconds (0-59)   4, 45
ss     Two digit seconds (0-59)   04, 45
SS     Optional seconds (only if non-zero)
f*     Fractional secs trailing zeros
F*     Fractional secs no trailing zeros
a      Lower case a/p for am/pm   a, p
aa     Lower case am/pm           am, pm
A      Upper case A/P for am/pm   A, P
AA     Upper case AM/PM           AM, PM
'xyz'  Literal characters

A symbol immediately preceding a "F" pattern with no fraction to print is skipped.

toStr virtual Str toStr()

Return programmatic ISO 8601 string encoding formatted as follows:

hh:mm:ss.FFFFFFFFF
12:06:00.0

Also see fromStr, toIso, and toLocale.

Haxall 4.0.5 ∙ 24-Feb-2026 14:33 EST