summaryrefslogtreecommitdiff
path: root/lisp/calendar/time-date.el
diff options
context:
space:
mode:
authorBob Rogers <rogers-emacs@rgrjr.homedns.org>2021-12-01 05:14:26 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2021-12-01 05:14:26 +0100
commitec59a6cb0fa4e8d0848a61bcb424ace7ce2ac922 (patch)
treeba846070bb6da4c109927ae0873183edea557082 /lisp/calendar/time-date.el
parente2637beb286d8fcc2775b0692494cfade5815921 (diff)
downloademacs-ec59a6cb0fa4e8d0848a61bcb424ace7ce2ac922.tar.gz
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).
Diffstat (limited to 'lisp/calendar/time-date.el')
-rw-r--r--lisp/calendar/time-date.el32
1 files changed, 19 insertions, 13 deletions
diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el
index 155c34927fd..6407138953c 100644
--- a/lisp/calendar/time-date.el
+++ b/lisp/calendar/time-date.el
@@ -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)