Time functions
- Contract / Module:
free.util-time
- Dependencies:
free.util-lists
free.util-math
free.util-chain-data
General functions
epoch
→ time
Return Unix EPOCH.
pact> (epoch)
"1970-01-01T00:00:00Z"
genesis
→ time
Return Kadena Genesis time.
pact> (genesis)
"2019-10-30T00:01:00Z"
now
→ time
Return the current time.
pact> (now)
"2022-12-04T14:54:24Z"
tomorrow
→ time
Return the current time + 24 hours.
pact> (tomorrow)
"2022-12-05T14:54:24Z"
yesterday
→ time
Return the current time - 24 hours.
pact> (yesterday)
"2022-12-03T14:54:24Z"
from-now
delta decimal
→ time
Returns the delta time taking now as a reference.
pact> (from-now (hours 1))
"2022-12-05T15:54:24Z"
today
→ string
Return the current day.
pact> (today)
"2022-12-04"
to-timestamp
in time
→ decimal
Compute an Unix timestamp of the input date.
pact> (to-timestamp (time "2022-12-05T00:08:53Z"))
1670198933.0
from-timestamp
timestamp decimal
→ time
Compute a time from an Unix timestamp.
pact> (from-timestamp 1670198933.0)
"2022-12-05T00:08:53Z"
Compare function
earliest
time1 time
time2 time
→ time
Return the earliest time between time1 and time2.
This function is equivalent to a min
between two times.
(earliest (time "2022-12-04T14:54:24Z") (time "2022-12-04T14:44:24Z"))
"2022-12-04T14:44:24Z"
latest
time1 time
time2 time
→ time
Return the earliest time between time1 and time2.
This function is equivalent to a max
between two times.
pact> (latest (time "2022-12-04T14:54:24Z") (time "2022-12-04T14:44:24Z"))
"2022-12-04T14:54:24Z"
time-between
time1 time
time2 time
in time
→ bool
Return true if in is between time1 and time2.
The order of time1 and time2 doesn’t matter.
pact> (time-between (time "2022-12-04T14:44:24Z")
....> (time "2022-12-24T14:44:24Z")
....> (time "2022-12-08T14:44:24Z"))
true
pact> (time-between (time "2022-12-24T14:44:24Z")
....> (time "2022-12-04T14:44:24Z")
....> (time "2022-12-08T14:44:24Z"))
true
pact> (time-between (time "2022-12-24T14:44:24Z")
....> (time "2022-12-04T14:44:24Z")
....> (time "2022-12-26T14:44:24Z"))
false
is-past
in time
→ bool
Return true if in is in the past (before now).
pact> (env-chain-data { 'block-time: (time "2022-12-04T14:54:24Z") })
"Updated public metadata"
pact> (is-past (time "2022-12-04T13:54:24Z"))
true
pact> (is-past (time "2022-12-04T15:54:24Z"))
false
is-future
in time
→ bool
Return true if in is in the future (after now).
pact> (env-chain-data { 'block-time: (time "2022-12-04T14:54:24Z") })
"Updated public metadata"
pact> (is-future (time "2022-12-04T13:54:24Z"))
false
pact> (is-future (time "2022-12-04T15:54:24Z"))
true
is-today
in time
→ bool
Return true if in is in the current day.
pact> (env-chain-data { 'block-time: (time "2022-12-04T14:54:24Z") })
"Updated public metadata"
pact> (is-today (time "2022-12-04T13:54:24Z"))
true
pact> (is-today (time "2022-12-05T13:54:24Z"))
false
Block height estimation functions
est-height-at-time
target-time time
→ integer
Estimates the block height at a target-time.
This function extrapolates the expected block height using the current block height, and the current time.
A block time of 30s is assumed.
This function can used for the future or the past.
If the computed result is a negative block height (before Genesis), 0 is returned.
pact> (est-height-at-time (time "2022-12-04T09:10:30Z"))
3257212
pact> (est-height-at-time (time "2018-01-01T09:10:30Z"))
0
est-time-at-height
target-height integer
→ time
Estimates the time at a target-block.
This function extrapolates the expected block height using the current block height, and the current time.
A block time of 30s is assumed.
This function can used for the future or the past.
pact> (est-time-at-height 3257212)
"2022-12-04T09:10:43Z"
Time difference functions
diff-time-minutes
time1 time
time2 time
→ decimal
Compute difference between time1 and time2 in minutes.
pact> (diff-time-minutes (time "2022-12-04T14:54:24Z") (time "2022-12-04T14:44:24Z"))
10.0
diff-time-hours
time1 time
time2 time
→ decimal
Compute difference between time1 and time2 in hours.
pact> (diff-time-hours (time "2022-12-04T14:54:24Z") (time "2022-12-04T04:54:24Z"))
10.0
diff-time-days
time1 time
time2 time
→ decimal
Compute difference between time1 and time2 in days.
pact> (diff-time-days (time "2022-12-04T14:54:24Z") (time "2022-12-02T14:54:24Z"))
2.0