24 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) → srfi:date? |
| time : (U time-tai? time-utc?) |
Converts time to a date.
| (time-utc? item) → boolean? |
| item : any |
Predicate that recognises SRFI-19 times of the time-utc type.
| (time-tai? item) → boolean? |
| item : any |
Predicate that recognises SRFI-19 times of the time-tai type.
| (time-duration? item) → boolean? |
| item : any |
Predicate that recognises SRFI-19 times of the time-duration type.
| (leap-year? year) → boolean? |
| year : integer? |
Returns #t if year is a leap year.
| (days-in-month month [year]) → integer? |
| month : integer? |
| year : integer? = 2001 |
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 |
| (date-valid? date) → boolean? |
| date : srfi:date? |
Returns #t if date is a valid date (its hour, day, month and so on are all in the correct ranges).
| (date-day-of-the-week date) |
| → (U 'mon 'tue 'wed 'thu 'fri 'sat 'sun) |
| date : date? |
Returns a symbol representing the day of the week on date.
| (date-week-day? date) → boolean? |
| date : date? |
Returns #t if date is a Monday, Tuesday, Wednesday or Friday.
| (time->ago-string then [now]) → string? | ||||||||||||
| then : (U time-tai time-utc) | ||||||||||||
|
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.
| (seconds->ago-string secs [now]) → string? |
| secs : integer? |
| now : integer? = (current-seconds) |
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" |
| (current-year) → integer? |
Returns the current four digit year.
| (current-time-zone-offset) → integer? |
Returns the current local time-zone offset in seconds (taking into account DST when and where appropriate).