* 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
* 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).