X-Git-Url: http://cgit.sxemacs.org/?a=blobdiff_plain;f=lisp%2Fparse-time.el;h=693f0fc335ac6127519af001eeed4b5acdff4d04;hb=c005c08600d944d7d5805a2913d8ff685d1d52c4;hp=2871623be4d5bf3a814fec4fb22580bdb0fe54dc;hpb=829f1a00aa23b38dc7297687f22a92e574cba85a;p=gnus diff --git a/lisp/parse-time.el b/lisp/parse-time.el index 2871623be..693f0fc33 100644 --- a/lisp/parse-time.el +++ b/lisp/parse-time.el @@ -1,8 +1,9 @@ ;;; parse-time.el --- Parsing time strings -;; Copyright (C) 1996 by Free Software Foundation, Inc. +;; Copyright (C) 1996, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +;; Free Software Foundation, Inc. -;; Author: Erik Naggum +;; Author: Erik Naggum ;; Keywords: util ;; This file is part of GNU Emacs. @@ -19,8 +20,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -32,11 +33,11 @@ ;; `parse-time-string' parses a time in a string and returns a list of 9 ;; values, just like `decode-time', where unspecified elements in the ;; string are returned as nil. `encode-time' may be applied on these -;; valuse to obtain an internal time value. +;; values to obtain an internal time value. ;;; Code: -(eval-when-compile (require 'cl)) ;and ah ain't kiddin' 'bout it +(eval-when-compile (require 'cl)) ;and ah ain't kiddin' 'bout it (defvar parse-time-syntax (make-vector 256 nil)) (defvar parse-time-digits (make-vector 256 nil)) @@ -47,15 +48,15 @@ (unless (aref parse-time-digits ?0) (loop for i from ?0 to ?9 - do (aset parse-time-digits i (- i ?0)))) + do (aset parse-time-digits i (- i ?0)))) (unless (aref parse-time-syntax ?0) (loop for i from ?0 to ?9 - do (aset parse-time-syntax i ?0)) + do (aset parse-time-syntax i ?0)) (loop for i from ?A to ?Z - do (aset parse-time-syntax i ?A)) + do (aset parse-time-syntax i ?A)) (loop for i from ?a to ?z - do (aset parse-time-syntax i ?a)) + do (aset parse-time-syntax i ?a)) (aset parse-time-syntax ?+ 1) (aset parse-time-syntax ?- -1) (aset parse-time-syntax ?: ?d) @@ -130,7 +131,7 @@ `(((6) parse-time-weekdays) ((3) (1 31)) ((4) parse-time-months) - ((5) (1970 2038)) + ((5) (100 4038)) ((2 1 0) ,#'(lambda () (and (stringp elt) (= (length elt) 8) @@ -157,14 +158,25 @@ ((2 1 0) ,#'(lambda () (and (stringp elt) (= (length elt) 5) (= (aref elt 2) ?:))) [0 2] [3 5] ,#'(lambda () 0)) - ((5) (70 99) ,#'(lambda () (+ 1900 elt)))) + ((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)))) "(slots predicate extractor...)") (defun parse-time-string (string) "Parse the time-string STRING into (SEC MIN HOUR DAY MON YEAR DOW DST TZ). The values are identical to those of `decode-time', but any values that are unknown are returned as nil." - (let ((time (list nil nil nil nil nil nil nil nil nil nil)) + (let ((time (list nil nil nil nil nil nil nil nil nil)) (temp (parse-time-tokenize (downcase string)))) (while temp (let ((elt (pop temp)) @@ -200,4 +212,5 @@ unknown are returned as nil." (provide 'parse-time) +;;; arch-tag: 07066094-45a8-4c68-b307-86195e2c1103 ;;; parse-time.el ends here