;; ;; util-time.scm ;; ;; Compatibility module for 5.2- vs 5.3+ chicken versions. ;; ;; ISC License ;; ;; Copyright 2023 Brmlab, z.s. ;; Dominik Pantůček ;; ;; Permission to use, copy, modify, and/or distribute this software ;; for any purpose with or without fee is hereby granted, provided ;; that the above copyright notice and this permission notice appear ;; in all copies. ;; ;; THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL ;; WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED ;; WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE ;; AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR ;; CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS ;; OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, ;; NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN ;; CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ;; (declare (unit util-time)) (module util-time ( current-util-milliseconds today/iso ) (import scheme (chicken time) (chicken time posix) (chicken format)) ;; Compatibility wrapper (define (current-util-milliseconds) (cond-expand (chicken-5.0 (current-milliseconds)) (chicken-5.1 (current-milliseconds)) (chicken-5.2 (current-milliseconds)) (else (current-process-milliseconds)))) ;; Returns today as YYYY-MM-DD string (define (today/iso) (let ((d (seconds->local-time))) (format "~A-~A-~A" (number->string (+ 1900 (vector-ref d 5))) (substring (number->string (+ 101 (vector-ref d 4))) 1) (substring (number->string (+ 100 (vector-ref d 3))) 1)))) )