emacs - 在 Emacs Lisp 中插入整月的日期

标签 emacs elisp

我在 Emacs Lisp 中到处做一些编程,但我不完全确定如何处理某些事情。

我正在尝试插入一整个月的日期,每个日期都在一个新行上,如下面的列表:

一月

01/01/09 星期一:

02/01/09 星期二:

03/01/09 星期三:

等等

我该怎么做?我已经找到了如何格式化日期,但我找不到如何在特定日期范围内循环(在这种情况下,循环整个月并为该月的每一天打印一个日期)。

有没有人可以给我一些关于如何开始的指示?

最佳答案

你要的功能是'encode-time , 'format-time-string , 和 'decode-time .
要获得正确的文档,请使用 C-h f function-name或者会给你这个函数的文档,或者可以在这里找到一般的 elisp 信息页面:C-h i m elisp RET m time conversion RET
这是那个片段:

(defun my-insert-dates ()
  "insert a bunch of dates"
  (interactive)
  (let* ((month 3)
         (day 1)
         (time (encode-time 1 1 0 day month 2009)))
    (while (= (nth 4 (decode-time time)) month)
      (insert (format-time-string "%D %a:\n" time))
      (setq day (1+ day))
      (setq time (encode-time 1 1 0 day month 2009)))))

我找不到如何确定给定月份的天数(当然,您可以对其进行硬编码,但是您必须处理闰年)。幸运的是,'encode-time为您完成所有添加,因此如果您将其传递给相当于“2 月 31 日”,它将返回“3 月 3 日”(假设为 28 天)。

关于emacs - 在 Emacs Lisp 中插入整月的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/753248/

相关文章:

没有 paredit 的 Emacs Clojure 模式

bash - 如何为 Emacs mingw32 for Windows 运行 Windows 10 的 bash?

emacs - 想要在 Emacs 的正常状态下使用空格键后接一个键而不是 C 键

emacs - 使用给定的工作目录在 emacs 中打开 shell

emacs - Elisp:如何在字节编译时避免 "functions are not known to be defined"?

emacs - 在 emacs 中混合使用 org-mode 和 c-mode

emacs - 将 Emacs 缓冲区固定到 Windows(用于 cscope)

emacs - 获取 Elisp/Emacs 中的交互功能列表

Emacs 和 ispell : error loading german8

c# - 由于 "make-local-hook",无法为 emacs 加载 C# 模式