(html (head (title "sph-lib (sph time)") (link (@ (rel "stylesheet") (type "text/css") (href "/css/sph.css"))) (meta (@ (name "viewport") (content "width=device-width,initial-scale=1"))) #f) (body () (div (@ (class top)) (nav (a (@ (href "/")) "start") ", " (a (@ (href "/feed.xml")) "feed")) "") (div (@ (class "middle")) (div (@ (class mtime) (title "last modification time of the current page")) "2023-04-05") (section (h1 "(sph time)") (div (p "time as tai or utc nanoseconds since the unix epoch or gregorian calendar dates.") (p "part of " (a (@ (href "../../sph-lib.html")) "sph-lib")) ((section (@ (class "library-description")) (h1 "library description") (div (p "get, manipulate and convert dates and times in scheme.") (p "uses a proleptic gregorian calendar with negative years and a year 0 equivalent to 1 BCE") (p "iso8601 and the gnu date utility include a year zero as well, to which the output is compatible.") (p "international atomic time is used because it does not use leap seconds. with utc it is") (p "not predictable when future leap seconds will be inserted, which makes it impossible to calculate accurate future times with utc.") (p "the implementation does not depend on other time libraries, only on a function that gives the current utc posixtime.") (p "it might also contain useful examples for calendar and time calculation implementors.") (p "objects") (p (((*ENTITY* "nbsp") (*ENTITY* "nbsp")) "utc: integer: utc seconds since the unix epoch. utc uses leap seconds to conform to (= number-of-days (/ utc-seconds 86400))")) (p (((*ENTITY* "nbsp") (*ENTITY* "nbsp")) "tai: integer: tai seconds since the unix epoch. as elapsed, no leap seconds")) (p (((*ENTITY* "nbsp") (*ENTITY* "nbsp")) "date: vector: gregorian calendar date, daytime and timezone offset")))) (section (@ (class "library-name")) (h1 "module name") (p "(sph time)")) (section (@ (class "library-exports")) (h1 "exported bindings") (div (div (@ (class "doc-bindings")) (div (@ (id "doc-b-" "date->week-day") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date->week-day") " " (span (@ (class "first-sig")) "a ->")) "" (div (@ (class "description")) (("from 0-6, with monday being the first day of the week")))) (div (@ (id "doc-b-" "date-add-day") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date-add-day") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "date-day") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date-day") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "date-hour") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date-hour") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "date-minute") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date-minute") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "date-month") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date-month") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "date-nanosecond") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date-nanosecond") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "date-new") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date-new") " " (span (@ (class "first-sig")) "#:year #:month #:day #:hour #:minute #:second #:nanosecond #:offset ->")) "" (div (@ (class "description")) (("create a date object")))) (div (@ (id "doc-b-" "date-new*") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date-new*") " " (span (@ (class "first-sig")) "[year month day hour minute second nanosecond offset] ->")) "" (div (@ (class "description")) (("like date-new but the arguments are not keyword arguments")))) (div (@ (id "doc-b-" "date-offset") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date-offset") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "date-second") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date-second") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "date-week-count") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date-week-count") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "date-year") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "date-year") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "nanoseconds->hms&") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "nanoseconds->hms&") " " (span (@ (class "first-sig")) "a c ->")) "" "") (div (@ (id "doc-b-" "nanoseconds->seconds") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "nanoseconds->seconds") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "ns->s") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "ns->s") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "s->ns") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "s->ns") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "seconds->nanoseconds") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "seconds->nanoseconds") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "sph-time-description") (class "doc-b")) (div (span (@ (class "type")) "variable") ": " (span (@ (class "name")) "sph-time-description")) "" "") (div (@ (id "doc-b-" "tai->utc") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "tai->utc") " " (span (@ (class "first-sig")) "a ->")) (div (@ (class "rest-sig")) (div "integer -> integer")) (div (@ (class "description")) (("convert tai time to utc time")))) (div (@ (id "doc-b-" "tai-add-minutes") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "tai-add-minutes") " " (span (@ (class "first-sig")) "a minutes ->")) "" (div (@ (class "description")) (("add minutes to tai or utc time")))) (div (@ (id "doc-b-" "tai-add-seconds") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "tai-add-seconds") " " (span (@ (class "first-sig")) "a seconds ->")) "" (div (@ (class "description")) (("add seconds to tai or utc time")))) (div (@ (id "doc-b-" "tai-current") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "tai-current") " " (span (@ (class "first-sig")) " ->")) "" (div (@ (class "description")) (("current tai seconds since the unix epoch")))) (div (@ (id "doc-b-" "tai-from-utc") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "tai-from-utc") " " (span (@ (class "first-sig")) "a ->")) (div (@ (class "rest-sig")) (div "integer -> integer")) (div (@ (class "description")) (("convert utc time to tai time")))) (div (@ (id "doc-b-" "utc->date") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc->date") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc->days") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc->days") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc->hours") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc->hours") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc->minutes") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc->minutes") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc->seconds") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc->seconds") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc->week") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc->week") " " (span (@ (class "first-sig")) "a ->")) (div (@ (class "rest-sig")) (div "integer -> integer")) "") (div (@ (id "doc-b-" "utc->week-day") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc->week-day") " " (span (@ (class "first-sig")) "a ->")) "" (div (@ (class "description")) (("from 0-6, with monday being the first day of the week")))) (div (@ (id "doc-b-" "utc->year") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc->year") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc->years") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc->years") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-add-day") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-add-day") " " (span (@ (class "first-sig")) "a days ->")) "" "") (div (@ (id "doc-b-" "utc-add-hours") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-add-hours") " " (span (@ (class "first-sig")) "a hours ->")) "" "") (div (@ (id "doc-b-" "utc-add-weeks") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-add-weeks") " " (span (@ (class "first-sig")) "a weeks ->")) "" "") (div (@ (id "doc-b-" "utc-add-years") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-add-years") " " (span (@ (class "first-sig")) "a years ->")) "" "") (div (@ (id "doc-b-" "utc-current") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-current") " " (span (@ (class "first-sig")) " ->")) (div (@ (class "rest-sig")) (div "-> integer")) "") (div (@ (id "doc-b-" "utc-days") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-days") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-days-and-rest&") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-days-and-rest&") " " (span (@ (class "first-sig")) "a c ->")) "" "") (div (@ (id "doc-b-" "utc-elapsed-day") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-elapsed-day") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-elapsed-hour") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-elapsed-hour") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-elapsed-minute") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-elapsed-minute") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-elapsed-month") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-elapsed-month") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-elapsed-year") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-elapsed-year") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-from-date") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-from-date") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-from-days") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-from-days") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-from-hours") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-from-hours") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-from-minutes") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-from-minutes") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-from-year") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-from-year") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-from-years") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-from-years") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-start-day") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-start-day") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-start-first-week") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-start-first-week") " " (span (@ (class "first-sig")) "a ->")) "" (div (@ (class "description")) (("iso standard first week of current year of time." (br) "based on if thursday falls into the first week-days of the year")))) (div (@ (id "doc-b-" "utc-start-hour") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-start-hour") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-start-last-week") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-start-last-week") " " (span (@ (class "first-sig")) "a ->")) "" (div (@ (class "description")) (("the start of the last week of the year")))) (div (@ (id "doc-b-" "utc-start-minute") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-start-minute") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-start-month") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-start-month") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-start-second") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-start-second") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-start-week") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-start-week") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-start-year") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-start-year") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-year") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-year") " " (span (@ (class "first-sig")) "a ->")) "" "") (div (@ (id "doc-b-" "utc-zone-offset") (class "doc-b")) (div (span (@ (class "type")) "procedure") ": " (span (@ (class "name")) "utc-zone-offset") " " (span (@ (class "first-sig")) " ->")) "" (div (@ (class "description")) (("get the current local system timezone offset"))))))))))) ()))