summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2019-07-08 18:09:53 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2019-07-08 18:09:53 +0200
commitdfba918cfcd34a15d6bcaffb0e08e26da8911d62 (patch)
tree849a90ae50f1166120d851e8b4ede6bb862ede1d
parentc632332053caaf0f08ccb9bc26183a4bc7c3f2c2 (diff)
downloademacs-dfba918cfcd34a15d6bcaffb0e08e26da8911d62.tar.gz
Allow adding time zones
-rw-r--r--lisp/calendar/time-date.el4
-rw-r--r--test/lisp/calendar/time-date-tests.el7
2 files changed, 11 insertions, 0 deletions
diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el
index 35c89a2ceac..ef6e9bc1bf7 100644
--- a/lisp/calendar/time-date.el
+++ b/lisp/calendar/time-date.el
@@ -421,6 +421,10 @@ changes in daylight saving time are not taken into account."
(setq seconds (+ (* (or (decoded-time-hour delta) 0) 3600)
(* (or (decoded-time-minute delta) 0) 60)
(or (decoded-time-second delta) 0)))
+
+ ;; Time zone adjustments are basically the same as time adjustments.
+ (setq seconds (+ seconds (or (decoded-time-zone delta) 0)))
+
(cond
((> seconds 0)
(decoded-time--alter-second time seconds t))
diff --git a/test/lisp/calendar/time-date-tests.el b/test/lisp/calendar/time-date-tests.el
index 02df0cd8ad7..d6cf742bc53 100644
--- a/test/lisp/calendar/time-date-tests.el
+++ b/test/lisp/calendar/time-date-tests.el
@@ -97,6 +97,13 @@
'(12 15 16 9 7 2019 1 t 7200)))
))
+(ert-deftest test-decoded-add-zone ()
+ (let ((time '(12 15 16 8 7 2019 1 t 7200)))
+ (should (equal (decoded-time-add time (mdec :zone -3600))
+ '(12 15 15 8 7 2019 1 t 7200)))
+ (should (equal (decoded-time-add time (mdec :zone -7200))
+ '(12 15 14 8 7 2019 1 t 7200)))))
+
(require 'ert)
;;; time-date-tests.el ends here