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:
Bob Rogers 2021-12-01 05:14:26 +01:00 committed by Lars Ingebrigtsen
parent e2637beb28
commit ec59a6cb0f

View file

@ -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)