Yanying Wang <yanyingwang1@gmail.com>
This library provides a bundle of extended functions for racket’s various time/date libs.
source code: https://github.com/yanyingwang/timable
Since this lib is not very stable, I may change the interfaces along with my learning of racket lang, you’d better specify this pkg with the git commit id such as: https://github.com/yanyingwang/timable#a6c610de02336a0f0858e50ce5f016bd82b79b8a.
Check more at Package Sources.
Please use gregor instead of srfi/19 if possible, since this lib is tightly sticking with gregor.
(requiretimable) is same as (requiretimable/gregortimable/convert).
Procedures that extended from Gregor: Dates and Times.
gregor)#<datetime 2025年11月22日T19:21:57.41484668>
#<datetime 2025年11月21日T19:21:57.419439209>
#<datetime 2025年11月01日T00:00:00>
#<datetime 2018年02月14日T12:30:45>
procedure
( current-date )→date?
procedure
procedure
procedure
procedure
#<date 2025年11月22日>
#<datetime 2025年11月22日T19:21:57.719550049>
#<moment 2025年11月22日T19:21:57.720434082Z[UTC]>
#<moment 2025年11月22日T19:21:57.721648926Z[Etc/UTC]>
procedure
( months-ago n)→datetime?
n:integer?procedure
( years-ago/utc n)→datetime?
n:integer?procedure
( months-ago/utc n)→datetime?
n:integer?procedure
( days-ago/utc n)→datetime?
n:integer?procedure
( hours-ago/utc n)→datetime?
n:integer?
#<datetime 2025年11月22日T19:21:57.985726074>
#<datetime 2025年11月22日T18:21:57.987160645>
#<datetime 2025年08月22日T19:21:58.024707275>
#<datetime 2024年11月22日T19:21:58.026301025>
#<datetime 2025年11月22日T18:21:58.027917969>
procedure
( years-from-now n)→datetime?
n:integer?procedure
( days-from-now n)→datetime?
n:integer?procedure
( hours-from-now n)→datetime?
n:integer?procedure
n:integer?procedure
n:integer?procedure
n:integer?
#<datetime 2025年11月22日T19:21:58.293885742>
#<datetime 2025年11月22日T20:21:58.295253174>
procedure
( prev-month t)→(or/c date? time?datetime? moment? )
procedure
( next-month t)→(or/c date? time?datetime? moment? )
procedure
( at-beginning/on-year t)→(date? or/c datetime? moment? )
#<datetime 2025年11月22日T19:21:58.771481689>
#<datetime 2025年11月22日T00:00:00>
#<datetime 2025年11月01日T00:00:00>
#<datetime 2025年11月30日T23:59:59.999999999>
procedure
m:moment?
#<moment 2025年11月22日T19:21:59.063182617Z[UTC]>
0
procedure
( parse/datetime str)→datetime?
str:string?
#<datetime 2018年02月14日T12:30:45>
#<datetime 2018年02月14日T12:30:45>
Functions that converting between MySQL Types and Gregor: Dates and Times.
(sql-timestamp 2025 11 22 0 0 0 0 #f)
(sql-date 2025 11 22)
(sql-timestamp 2025 11 22 0 0 0 0 #f)
(sql-timestamp 2025 11 22 19 21 59 743154785 #f)
(sql-timestamp 2025 11 22 19 21 59 746148438 0)
(sql-timestamp 2025 11 22 19 21 59 747424316 #f)
(sql-timestamp 2025 11 23 3 21 59 749553223 8)
procedure
( now/sql d)→sql-timestamp?
d:moment?procedure
d:moment?procedure
procedure
d:moment?procedure
d:date?
#<date 2025年11月22日>
(sql-date 2025 11 22)
(sql-timestamp 2025 11 22 19 22 0 15703369 #f)
(sql-timestamp 2025 11 22 19 22 0 17087646 0)
Procedures that extended from SRFI 19: Time Data Types and Procedures.
(date* 0 22 14 22 11 2025 6 325 #f 0 350000000 "")
#t
(date* 0 0 19 22 11 2025 6 325 #f 0 0 "")
(tm:time 'time-utc 0 1763838000)
(list
(date* 0 0 14 22 11 2025 6 325 #f 0 0 "")
(date* 0 0 15 22 11 2025 6 325 #f 0 0 "")
(date* 0 0 16 22 11 2025 6 325 #f 0 0 "")
(date* 0 0 17 22 11 2025 6 325 #f 0 0 ""))
(list
(tm:time 'time-utc 0 1763820000)
(tm:time 'time-utc 0 1763823600)
(tm:time 'time-utc 0 1763827200)
(tm:time 'time-utc 0 1763830800))
(date* 0 0 0 22 11 2025 6 325 #f 0 0 "")
(date* 0 0 0 1 11 2025 6 304 #f 0 0 "")
(date* 0 0 0 1 1 2025 3 0 #f 0 0 "")
"Mon Jan 01 11:11:11+0800 2018"
"Mon Jan 01 12:00:00Z 2018"
procedure
( hours-ago/time n)→time?
n:number?
procedure
( hours-ago/date n)→date?
n:number?
procedure
( hours-from-now n)→date?
n:number?
procedure
( hours-from-now/time n)→time?
n:number?
procedure
( hours-from-now/date n)→date?
n:number?
procedure
( time-in-range? time1time2time3)→boolean?
time1:time?time2:time?time3:time?
procedure
( time-in-range<>? time1time2time3)→boolean?
time1:time?time2:time?time3:time?
procedure
( time-in-range==? time1time2time3)→boolean?
time1:time?time2:time?time3:time?
procedure
( time-in-range=<>=? time1time2time3)→boolean?
time1:time?time2:time?time3:time?
procedure
( time-in-range=<>? time1time2time3)→boolean?
time1:time?time2:time?time3:time?
procedure
( time-in-range<>=? time1time2time3)→boolean?
time1:time?time2:time?time3:time?
procedure
( beginning-date d)→date?
d:date?
procedure
( beginning-date/day d)→date?
d:date?
procedure
( beginning-date/month d)→date?
d:date?
procedure
( beginning-date/year d)→date?
d:date?
procedure
( end-date d)→date?
d:date?
procedure
( end-date/day d)→date?
d:date?
procedure
( end-date/month d)→date?
d:date?
procedure
( end-date/year d)→date?
d:date?
procedure
( previous-date/day d)→date?
d:date?
procedure
( date-parse str)→date?
str:string?
procedure
( previous-date/month d)→date?
d:date?
procedure
( last-oclock/time d)→time?
d:time?
procedure
( last-oclock/date d)→date?
d:date?
procedure
( last-oclock d)→date?
d:date?
procedure
( oclocks-between d1d2)→list?
d1:date?d2:date?
procedure
( oclocks-between/time t1t2)→list?
t1:time?t2:time?
procedure
( oclocks-between/date d1d2)→list?
d1:date?d2:date?
procedure
( time-utc->date->string t[format-string])→string?
t:time?
procedure
( time-utc->string t[format-string])→string?
t:time?
at-end/on-month. –2020年02月04日
enh docs for gregor. –2020年02月03日
version 0.2.0
add parse/datetime to gregor lib. –2019年12月16日
add now/sql now/moment/sql today/sql ... to convert lib.
rename timeless to timable and add support to gregor and sql-timestamp.
splited from chive and name it to timeless only support srfi/19 lib.
refactor chive from chez scheme version to racket.