* date parsing @ 2004-08-10 15:18 Yoni Rabkin Katzenell 2004-08-10 16:32 ` Ehud Karni [not found] ` <mailman.682.1092155793.2011.help-gnu-emacs@gnu.org> 0 siblings, 2 replies; 4+ messages in thread From: Yoni Rabkin Katzenell @ 2004-08-10 15:18 UTC (permalink / raw) I'm looking for an Emacs Lisp function library for parsing human-readable dates. It seems that Emacs can parse RFC 1123 dates (for Emails) but no other human-readable formats. -- "Cut your own wood and it will warm you twice" Regards, Yoni Rabkin Katzenell ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: date parsing 2004-08-10 15:18 date parsing Yoni Rabkin Katzenell @ 2004-08-10 16:32 ` Ehud Karni 2004-08-10 16:45 ` Ehud Karni [not found] ` <mailman.682.1092155793.2011.help-gnu-emacs@gnu.org> 1 sibling, 1 reply; 4+ messages in thread From: Ehud Karni @ 2004-08-10 16:32 UTC (permalink / raw) Cc: help-gnu-emacs On Tue, 10 Aug 2004 18:18:35 +0300, Yoni Rabkin Katzenell <yoni-r@actcom.com> wrote: > > I'm looking for an Emacs Lisp function library for parsing > human-readable dates. It seems that Emacs can parse RFC 1123 dates (for > Emails) but no other human-readable formats. I don't know why you say that. Look at at gnus/parse-time.el, change the value of `parse-time-rules' by adding (just) 1 element: (setq parse-time-rules `(((6) parse-time-weekdays) ((3) (1 31)) ((4) (1 12)) ;;Added element by Ehud Karni ((4) parse-time-months) ((5) (100 4038)) ((2 1 0) ,#'(lambda () (and (stringp elt) (= (length elt) 8) (= (aref elt 2) ?:) (= (aref elt 5) ?:))) [0 2] [3 5] [6 8]) ((8 7) parse-time-zoneinfo ,#'(lambda () (car val)) ,#'(lambda () (cadr val))) ((8) ,#'(lambda () (and (stringp elt) (= 5 (length elt)) (or (= (aref elt 0) ?+) (= (aref elt 0) ?-)))) ,#'(lambda () (* 60 (+ (parse-integer elt 3 5) (* 60 (parse-integer elt 1 3))) (if (= (aref elt 0) ?-) -1 1)))) ((5 4 3) ,#'(lambda () (and (stringp elt) (= (length elt) 10) (= (aref elt 4) ?-) (= (aref elt 7) ?-))) [0 4] [5 7] [8 10]) ((2 1 0) ,#'(lambda () (and (stringp elt) (= (length elt) 5) (= (aref elt 2) ?:))) [0 2] [3 5] ,#'(lambda () 0)) ((2 1 0) ,#'(lambda () (and (stringp elt) (= (length elt) 4) (= (aref elt 1) ?:))) [0 1] [2 4] ,#'(lambda () 0)) ((2 1 0) ,#'(lambda () (and (stringp elt) (= (length elt) 7) (= (aref elt 1) ?:))) [0 1] [2 4] [5 7]) ((5) (50 110) ,#'(lambda () (+ 1900 elt))) ((5) (0 49) ,#'(lambda () (+ 2000 elt))))) and check this by evaluating the following: (parse-time-string "10/01/2004 11:22:33") (parse-time-string "10/Jan/2004 11:22:33") (parse-time-string "2004-01-10 11:22:33") (parse-time-string "10/1/2004 11:22:33") (parse-time-string "10 Jan 2004 11:22:33") (parse-time-string "Jan 10 2004 11:22:33") (parse-time-string "2004 Jan 10 11:22:33") (parse-time-string "10 Jan 04 11:22:33") (parse-time-string "10/01/04 11:22:33") (parse-time-string "10/Jan/04 11:22:33") (parse-time-string "10/1/04 11:22:33") (parse-time-string "11:22:33 10/01/2004") (parse-time-string "11:22:33 10/Jan/2004") (parse-time-string "11:22:33 2004-01-10") (parse-time-string "11:22:33 10/1/2004") each of these gives: (33 22 11 10 1 2004 nil nil nil) `parse-time-string' fails when you use only 1 digit for the month or day, or 2 digits for the year in the Y-M-D format. i.e. (parse-time-string "11:22:33 04-01-10") ==> (33 22 11 nil nil nil nil nil nil) If you have other "human readable" format just check them. Ehud. -- Ehud Karni Tel: +972-3-7966-561 /"\ Mivtach - Simon Fax: +972-3-7966-667 \ / ASCII Ribbon Campaign Insurance agencies (USA) voice mail and X Against HTML Mail http://www.mvs.co.il FAX: 1-815-5509341 / \ GnuPG: 98EA398D <http://www.keyserver.net/> Better Safe Than Sorry ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: date parsing 2004-08-10 16:32 ` Ehud Karni @ 2004-08-10 16:45 ` Ehud Karni 0 siblings, 0 replies; 4+ messages in thread From: Ehud Karni @ 2004-08-10 16:45 UTC (permalink / raw) Cc: help-gnu-emacs On Tue, 10 Aug 2004 19:32:12 +0300, Ehud Karni <ehud@unix.mvs.co.il> wrote: > > I don't know why you say that. Look at at gnus/parse-time.el, In emacs 21.4 (CVS version) it was moved to calendar/parse-time.el. My suggested addendum still applies. Ehud. -- Ehud Karni Tel: +972-3-7966-561 /"\ Mivtach - Simon Fax: +972-3-7966-667 \ / ASCII Ribbon Campaign Insurance agencies (USA) voice mail and X Against HTML Mail http://www.mvs.co.il FAX: 1-815-5509341 / \ GnuPG: 98EA398D <http://www.keyserver.net/> Better Safe Than Sorry ^ permalink raw reply [flat|nested] 4+ messages in thread
[parent not found: <mailman.682.1092155793.2011.help-gnu-emacs@gnu.org>]
* Re: date parsing [not found] ` <mailman.682.1092155793.2011.help-gnu-emacs@gnu.org> @ 2004-08-10 20:15 ` Yoni Rabkin Katzenell 0 siblings, 0 replies; 4+ messages in thread From: Yoni Rabkin Katzenell @ 2004-08-10 20:15 UTC (permalink / raw) Thanks, but I think I'll stick to changes that will not disappear next time I compile Emacs. Modifying the functions from the calendar dir was is still my last resort. As for checking that parse-time is really ok, the real test would be to encode that value that parse-time gives you and then decode it back to a string and see that they match. I'll quote from time-date.el: ;; `parse-time-string' isn't sufficiently general or ;; robust. It fails to grok some of the formats that ;; timezone does (e.g. dodgy post-2000 stuff from some ;; Elms) and either fails or returns bogus values. Lars ;; reverted this change, but that loses non-trivially ;; often for me. -- fx Nevertheless, thank you for the cool idea and the time you took to promptly reply. -- "Cut your own wood and it will warm you twice" Regards, Yoni Rabkin Katzenell ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2004-08-10 20:15 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2004-08-10 15:18 date parsing Yoni Rabkin Katzenell 2004-08-10 16:32 ` Ehud Karni 2004-08-10 16:45 ` Ehud Karni [not found] ` <mailman.682.1092155793.2011.help-gnu-emacs@gnu.org> 2004-08-10 20:15 ` Yoni Rabkin Katzenell
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).