From dfba918cfcd34a15d6bcaffb0e08e26da8911d62 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Mon, 8 Jul 2019 18:09:53 +0200 Subject: Allow adding time zones --- lisp/calendar/time-date.el | 4 ++++ test/lisp/calendar/time-date-tests.el | 7 +++++++ 2 files changed, 11 insertions(+) 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 -- cgit v1.2.1