emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master ec59a6c: Make date-to-time work with date-only date strings


From: Lars Ingebrigtsen
Subject: master ec59a6c: Make date-to-time work with date-only date strings
Date: Tue, 30 Nov 2021 23:17:51 -0500 (EST)

branch: master
commit ec59a6cb0fa4e8d0848a61bcb424ace7ce2ac922
Author: Bob Rogers <rogers-emacs@rgrjr.homedns.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    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).
---
 lisp/calendar/time-date.el | 32 +++++++++++++++++++-------------
 1 file changed, 19 insertions(+), 13 deletions(-)

diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el
index 155c349..6407138 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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]