strtotime для Emacs Lisp - PullRequest
       5

strtotime для Emacs Lisp

4 голосов
/ 22 сентября 2009

Есть ли в Emacs Lisp какие-либо функции, которые ведут себя подобно PHP strtotime function ? (На самом деле AFAIK реализует относительные элементы форматов ввода даты GNU .)

В PHP я могу написать

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

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

Ответы [ 3 ]

4 голосов
/ 22 сентября 2009

Хотя это не совсем то, что вы просите, это может быть полезно. В пакете 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 .

3 голосов
/ 23 сентября 2009
(defun string-to-time (date)
  (shell-command-to-string (format "date --date='%s' +%%s" date)))
1 голос
/ 22 сентября 2009

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

...