Emacs Lisp中的strtotime

4

有没有类似于 PHP 中的 strtotime 函数的 Emacs Lisp 功能?(实际上,据我所知它实现了 GNU 日期输入格式的相关项。)

在 PHP 中,我可以这样写:

echo strtotime("+2 months"); //1258891352
echo strtotime("-3 months +2 weeks"); //1246952239

返回相应的UNIX时间戳。

3个回答

4
虽然不是您所要求的内容,但这可能会有帮助。在org-mode软件包中有一个命令'org-schedule,它具有非常好的选择日期界面。特定的命令是'org-read-date,它可以理解许多表示日期的方式,包括:
 +0            --> today
 .             --> today
 +4d           --> four days from today
 +4            --> same as above
 +2w           --> two weeks from today
 ++5           --> five days from default date
 +2tue         --> second Tuesday from now.

如果你正在寻找一种交互式的方式来指定日期,那么这个例程应该很好地满足你的需求。如果你正在寻找一个编程解决方案,似乎上述命令调用 'org-read-date-analyze' 来完成工作。注意:它的用法有点晦涩(其中两个参数从未定义...),所以如果你无法直接弄清楚它,可能值得发送邮件到 org 邮件列表 org mailing list

我检查了org-mode的日期功能,但没有找到这个函数。谢谢。 - viam0Zah
函数org-read-date-analyze不是一个命令,而是在org.el文件中的第13155行定义的(最新的org.el文件:http://repo.or.cz/w/org-mode.git/blob/HEAD:/lisp/org.el)。 - Trey Jackson
我接受这个答案。虽然它没有完全覆盖 strtotime 提供的功能,但其目标相似且是一种本地解决方案。 - viam0Zah

3
(defun string-to-time (date)
  (shell-command-to-string (format "date --date='%s' +%%s" date)))

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接