type

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

compare

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

equals

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

fromDuration

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

fromIso

Parse an ISO 8601 time.

fromLocale

Parse a string into a Time using the given pattern.

hash

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

hour

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

isMidnight

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

min

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

minus

Subtract the specified duration to this time.

nanoSec

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

now

Get the current time using the specified timezone.

plus

Add the specified duration to this time.

sec

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

toCode

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

toDateTime

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

toDuration

Return the duration of time which has elapsed since midnight.

toIso

Format this instance according to ISO 8601 using the pattern

toLocale

Format this date according to the specified pattern.

toStr

Return programmatic ISO 8601 string encoding formatted as follows

Slot Details

compare

virtual override 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 override 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 := true)

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 := true)

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 := true)

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 override 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 := 0, Int ns := 0)

Make for the specified time values:

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

Throw ArgErr is 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 := TimeZone.cur())

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 := TimeZone.cur())

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 := null, Locale locale := Locale.cur())

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 a no fraction to print is skipped.

toStr

virtual override 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.