30 SRFI19 time utilities
(require (planet untyped/unlib/time)) |
Utility procedures for use with SRFI 19 times and dates.
Creates a copy of date, substituting non-#f arguments for the values of the relevant fields.
(time->date time [tz]) → srfi:date? |
time : (U time-tai? time-utc?) |
tz : integer? = (current-time-zone-offset) |
Converts time to a date.
Predicate that recognises SRFI-19 times of the time-duration type.
Returns the number of days in month in year. month is numbered from 1 to 12. year defaults to a non-leap year if omitted.
Examples: |
> (days-in-month 2) |
28 |
> (days-in-month 2 2000) |
29 |
Returns #t if date is a valid date (its hour, day, month and so on are all in the correct ranges).
Returns a symbol representing the day of the week on date.
Returns #t if date is a Monday, Tuesday, Wednesday or Friday.
| ||||||||||||||||||||||||||||
then : (U time-tai time-utc) | ||||||||||||||||||||||||||||
now : (U time-tai time-utc) = (current-time (time-type then)) | ||||||||||||||||||||||||||||
format-string : string? = "~a ~a ago" | ||||||||||||||||||||||||||||
boolean? : #f |
Given the time of an event the past (and, optionally, another argument representing the current time), returns a textual description of the time passed since the event. Raises exn:fail:unlib if now is before then. See seconds->ago-string for examples.
The optional format-string argument should have two wildcards in it: one for the number (1, 2, 59) and one for the unit (seconds, minutes, days). The format string is ignored if the result is "yesterday".
The optional short? argument can be set to #t to use abbreviated time units (such as "min" rather than "minute").
| ||||||||||||||||||||||||||||
secs : integer? | ||||||||||||||||||||||||||||
now : integer? = (current-seconds) | ||||||||||||||||||||||||||||
format-string : string? = "~a ~a ago" | ||||||||||||||||||||||||||||
boolean? : #f |
Like time->ago-string but then and now are integer values like those output by current-seconds.
Examples: |
> (seconds->ago-string (- (current-seconds) 45)) |
"45 seconds ago" |
> (seconds->ago-string (- (current-seconds) (* 30 60))) |
"30 minutes ago" |
> (seconds->ago-string (- (current-seconds) (* 20 60 60))) |
"20 hours ago" |
> (seconds->ago-string (- (current-seconds) (* 25 60 60))) |
"yesterday" |
> (seconds->ago-string (- (current-seconds) (* 50 60 60))) |
"2 days ago" |
Returns the current local time-zone offset in seconds (taking into account DST when and where appropriate).
Formats time (a time-tai struct) according to the specified srfi/19 format-string.