X-Git-Url: https://git.madduck.net/etc/awesome.git/blobdiff_plain/33e6d576521eb23df0e11944616af37fb261f121..7cefb5bfb88f1bfc2d4075fa0e29b10d403ac7d7:/doc/timetable.md?ds=sidebyside diff --git a/doc/timetable.md b/doc/timetable.md index 7a7706a..812da43 100644 --- a/doc/timetable.md +++ b/doc/timetable.md @@ -1,4 +1,4 @@ -# `luatz.timetable` +## `luatz.timetable` {#timetable} Provides an class to represent a time and date. Objects have no concept of timezone or utc offset. @@ -15,46 +15,57 @@ The fields are intentionally compatible with the lua standard library's `os.date - `wday` (optional) timetable components may be outside of their standard range (e.g. a month component of -14) to faciliate arithmetic operations on date components. `:normalise ( )` can be +14) to facilitate arithmetic operations on date components. `:normalise()` can be called to modify components to return to their standard range. Equality and comparisons should work between timetable objects. -## `new ( year , month , day , hour , min , sec , [yday] , [wday] )` +### `new(year, month, day, hour, min, sec[, yday[, [wday]])` {#timetable.new} Returns a new timetable with the given contents. -## `new_from_timestamp ( timestamp )` +### `new_from_timestamp(timestamp)` {#timetable.new_from_timestamp} -Returns a new timetable given a timestamp in seconds since the unix epoch of +Returns a new (normalised) timetable, given a timestamp in seconds since the unix epoch of 1970-01-01. -`:normalise ( )` should probably be called before use to resolve to the current time and -date. +### `timetable:clone()` {#timetable:clone} -## `:clone ( )` +Returns a new independent instance of an existing timetable object. -Returns a new independant instance of an existing timetable object. +### `timetable:normalise()` {#timetable:normalise} -## `:normalise ( )` - -Mutates the current object's time and date components so that they lie within 'normal' +Mutates the current object's time and date components so that are integers within 'normal' ranges e.g. `month` is `1`-`12`; `min` is `0`-`59` +First, fractional parts are propagated down. +e.g. `.month=6.5` `.day=1` (which could be read as "the first day after the middle of June") +normalises to `.month=2` `.day=16` + +Second, any fields outside of their normal ranges are propagated up +e.g. `.hour=10` `.min=100` (100 minutes past 10am) +normalises to `.hour=11` `.min=40` -## `:rfc_3339 ( )` and `__tostring` metamethod + +### `timetable:rfc_3339()` {#timetable:rfc_3339} Returns the timetable formatted as an rfc-3339 style string. The timezone offset (or Z) is not appended. -The ranges of components are not checked, and if you want a valid timestamp, `:normalise -( )` should be called first. +The ranges of components are not checked, if you want a valid timestamp, +[`:normalise()`](#timetable:normalise) should be called first. + +This function is also the `__tostring` metamethod for timetable objects + + +### `timetable:timestamp()` {#timetable:timestamp} + +Returns the timetable as the number of seconds since unix epoch (1970-01-01) as a lua number. -## `:timestamp ( )` +### `timetable:unpack()` {#timetable:unpack} -Returns the timetable as the number of seconds since unix epoch (1970-01-01) as a lua -number. +Unpacks the timetable object; returns `year`, `month`, `day`, `hour`, `min`, `sec`, `yday`, `wday`