[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: date parsing
From: |
Ehud Karni |
Subject: |
Re: date parsing |
Date: |
Tue, 10 Aug 2004 19:32:12 +0300 |
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
- date parsing, Yoni Rabkin Katzenell, 2004/08/10
- Re: date parsing,
Ehud Karni <=
- Message not available