This Web
Other Webs
Schematics
Scheme Links
date->string
string->date
> (require (lib "date.ss")) > (date-display-format 'iso-8601) > (date->string (seconds->date (current-seconds)) #t) "2004-04-28 10:34:19"
(require (lib "string.ss" "srfi" "13") (prefix time: (lib "time.ss" "srfi" "19"))) (define (date->iso8601 dt) (let ((tzoff (/ (time:date-zone-offset dt) 3600))) (format "~A~A~A:~A" (time:date->string dt "~Y-~m-~dT~H:~M:~S") (if (< tzoff 0) "-" "") (string-pad (number->string (abs tzoff)) 2 #\0) "00"))) (define (iso8601->date str) (time:make-date 0 (string->number (substring/shared str 17 19)) (string->number (substring/shared str 14 16)) (string->number (substring/shared str 11 13)) (string->number (substring/shared str 8 10)) (string->number (substring/shared str 5 7)) (string->number (substring/shared str 0 4)) (if (char=? (string-ref str 19) #\Z) 0 (- (+ (* (string->number (substring/shared str 20 22)) 3600) (* (string->number (substring/shared str 23 25)) 60))))))