2009-09-22 3 views
4

Есть ли какие-либо функции в Emacs Lisp, которые ведут себя аналогично PHP's strtotime function? (На самом деле AFAIK он реализует relative items of the GNU date input formats.)strtotime for Emacs Lisp

В PHP можно написать

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

которые возвращают соответствующие метки времени UNIX.

ответ

4

Хотя это не то, о чем вы просите, это может быть полезно. В пакете 'org-schedule есть команда org-mode, которая имеет отличный интерфейс для выбора дат. Специальная команда, которая делает это '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 mailing list.

+0

Проверенные объекты режима org-mode, но не нашли эту функцию. Благодарю. –

+0

Функция 'org-read-date-analysis не является командой, но определена в org.el вокруг строки 13155 (для последней версии org.el: http://repo.or.cz/w/org-mode. git/blob/HEAD: /lisp/org.el) –

+0

Я принимаю этот ответ. Он не охватывает точно такую ​​же функциональность, что и 'strtotime', но ее цель схожа и является родным решением. –

1

Ближайшая встроенная функция, которую я знаю, является временем кодирования. Если вы хотите использовать естественный язык, вам, вероятно, придется написать что-то вроде этого: http://github.com/chaitanyagupta/chronicity

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

Ха-ха, и в самом деле. –