lisp - 如何在 Racket 中将 sql-timestamp 转换为字符串?

标签 lisp timestamp scheme racket

我在查看文档时想到的最接近的事情是

(define (sql-datetime->rfc2822 datetime)
  (let ([dt (sql-datetime->srfi-date datetime)])
    (date->string dt (date-display-format 'rfc2822))))

但是当我向它传递一个 sql-timestamp

时它失败了
> (sql-datetime->rfc2822 st)
. . date->string: contract violation
 expected: date?
 given: (tm:date 456232000 10 39 18 5 5 2013 0)
in: the 1st argument of
      (->* (date?) (any/c) string?)
contract from: <collects>/racket/date.rkt

最佳答案

在 Racket 版本 5.3.4 之前,您需要使用 srfi/19 库中的 date->string 函数,因为 racket 的结构类型/datesrfi/19 不兼容(在即将发布的5.3.4中,它们使用相同的结构)。如果您 (require srfi/19) 并使用那里定义的 API,它应该可以工作。

关于lisp - 如何在 Racket 中将 sql-timestamp 转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403843/

相关文章:

lisp - S 表达式习语

javascript - Moment.js amDateFormat 总是从 1970 年返回日期

scheme - 协程是如何实现的?

scheme - 如何解决Scheme中的N-Queens?

functional-programming - 从列表中添加数字(例如 asdf125dkf 将返回 8)

recursion - Lisp 编程错误(堆栈溢出(深))

lisp - 计算列表中有多少个正数(NIL 不是数字?)

javascript - mongodb 日期时间过滤和聚合

python - 在 Pandas 中,如何将字符串转换为带毫秒的 datetime 对象?

list - Scheme如何创建一个列表