Make date-to-time work with date-only date strings
* lisp/calendar/time-date.el (date-to-time): Try harder to parse dates with no times (bug#52209).
This commit is contained in:
parent
e2637beb28
commit
ec59a6cb0f
1 changed files with 19 additions and 13 deletions
|
@ -153,19 +153,25 @@ it is assumed that PICO was omitted and should be treated as zero."
|
|||
"Parse a string DATE that represents a date-time and return a time value.
|
||||
DATE should be in one of the forms recognized by `parse-time-string'.
|
||||
If DATE lacks timezone information, GMT is assumed."
|
||||
(condition-case err
|
||||
(encode-time (parse-time-string date))
|
||||
(error
|
||||
(let ((overflow-error '(error "Specified time is not representable")))
|
||||
(if (equal err overflow-error)
|
||||
(signal (car err) (cdr err))
|
||||
(condition-case err
|
||||
(encode-time (parse-time-string
|
||||
(timezone-make-date-arpa-standard date)))
|
||||
(error
|
||||
(if (equal err overflow-error)
|
||||
(signal (car err) (cdr err))
|
||||
(error "Invalid date: %s" date)))))))))
|
||||
;; Pass the result of parsing through decoded-time-set-defaults
|
||||
;; because encode-time signals if HH:MM:SS are not filled in.
|
||||
(encode-time
|
||||
(decoded-time-set-defaults
|
||||
(condition-case err
|
||||
(parse-time-string date)
|
||||
(error
|
||||
(let ((overflow-error '(error "Specified time is not representable")))
|
||||
(if (or (equal err overflow-error)
|
||||
;; timezone-make-date-arpa-standard misbehaves if
|
||||
;; not given at least HH:MM as part of the date.
|
||||
(not (string-match ":" date)))
|
||||
(signal (car err) (cdr err))
|
||||
(condition-case err
|
||||
(parse-time-string (timezone-make-date-arpa-standard date))
|
||||
(error
|
||||
(if (equal err overflow-error)
|
||||
(signal (car err) (cdr err))
|
||||
(error "Invalid date: %s" date)))))))))))
|
||||
|
||||
;;;###autoload
|
||||
(defalias 'time-to-seconds 'float-time)
|
||||
|
|
Loading…
Add table
Reference in a new issue