Fix analyzing european dates with time but without year

* lisp/org.el (org-read-date-analyze): Fix analyzing for dates like
  "29.03 16:40".
* testing/lisp/test-org.el: Add test.
This commit is contained in:
Nicolas Goaziou 2012-10-12 17:52:47 +02:00
parent 93f4b7c6d8
commit 5212d4fa6b
2 changed files with 24 additions and 6 deletions

View File

@ -15502,14 +15502,13 @@ user."
;; Help matching dotted european dates
(when (string-match
"^ *\\(3[01]\\|0?[1-9]\\|[12][0-9]\\)\\. ?\\(0?[1-9]\\|1[012]\\)\\. ?\\([1-9][0-9][0-9][0-9]\\)?" ans)
(setq year (if (match-end 3)
(string-to-number (match-string 3 ans))
(progn (setq kill-year t)
(string-to-number (format-time-string "%Y"))))
"^ *\\(3[01]\\|0?[1-9]\\|[12][0-9]\\)\\. ?\\(0?[1-9]\\|1[012]\\)\\.\\( ?[1-9][0-9]\\{3\\}\\)?" ans)
(setq year (if (match-end 3) (string-to-number (match-string 3 ans))
(setq kill-year t)
(string-to-number (format-time-string "%Y")))
day (string-to-number (match-string 1 ans))
month (string-to-number (match-string 2 ans))
ans (replace-match (format "%04d-%02d-%02d\\5" year month day)
ans (replace-match (format "%04d-%02d-%02d" year month day)
t nil ans)))
;; Help matching american dates, like 5/30 or 5/30/7

View File

@ -89,6 +89,25 @@ http://article.gmane.org/gmane.emacs.orgmode/21459/"
(should (equal '(2 1) (org-babel-execute-src-block)))))
;;; Date Analysis
(ert-deftest test-org/org-read-date ()
"Test `org-read-date' specifications."
;; Parse ISO date with abbreviated year and month.
(should (equal "2012-03-29 16:40"
(let ((org-time-was-given t))
(org-read-date t nil "12-3-29 16:40"))))
;; Parse Europeans dates.
(should (equal "2012-03-29 16:40"
(let ((org-time-was-given t))
(org-read-date t nil "29.03.2012 16:40"))))
;; Parse Europeans dates without year.
(should (string-match "2[0-9]\\{3\\}-03-29 16:40"
(let ((org-time-was-given t))
(org-read-date t nil "29.03. 16:40")))))
;;; Links