在Common Lisp中格式化当前系统日期

时间:2014-01-02 03:10:41

标签: date formatting common-lisp

我试图通过以下函数

获取Common Lisp中的当前系统日期
(defun current-date-string ()
  "Returns current date as a string."
  (multiple-value-bind (sec min hr day mon yr dow dst-p tz)
                       (get-decoded-time)
    (declare (ignore sec min hr dow dst-p tz))
    (format nil "~A-~A-~A" yr mon day)))

很遗憾,我以“2014-1-2”格式获取当前日期。但实际上我需要这种格式“2014-01-02”。我们有什么办法可以改变格式吗?我尝试用yyyy-mm-dd替换nil,但没有运气。但是我的机器时钟显示日期格式为“2014-01-02”。

2 个答案:

答案 0 :(得分:6)

What you need is

(format nil "~4,'0d-~2,'0d-~2,'0d" yr mon day)

~2,'0d表示:

  • d:十进制输出(而不是您的通用a
  • 2:第一个参数:width
  • '0:第二个参数:pad char 0

我建议您阅读Formatted Output; format是一个非常强大的工具。

答案 1 :(得分:0)