]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new function time-zone-format
authorLars Ingebrigtsen <larsi@gnus.org>
Tue, 30 Jul 2019 14:56:12 +0000 (16:56 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Wed, 31 Jul 2019 19:47:29 +0000 (21:47 +0200)
* lisp/calendar/time-date.el (time-zone-format): New function.

etc/NEWS
lisp/calendar/time-date.el
test/lisp/calendar/time-date-tests.el

index 486e677539db0f50cf6868c96bf9e692f62eb905..e1ac4eb9337b3af86f3e4943815d93b0d6fec905 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -2110,6 +2110,10 @@ doing computations on a decoded time structure), 'make-decoded-time'
 filled out), and 'encoded-time-set-defaults' (which fills in nil
 elements as if it's midnight January 1st, 1970) have been added.
 
+*** The new function `time-zone-format' has been added to format
+Emacs time zones (which are in seconds) according to many standards
+(i.e., "+01:00").
+
 ** 'define-minor-mode' automatically documents the meaning of ARG.
 
 +++
index f14478e67cc5a888db72c34e133cb7289de7b27e..efc9ae4e3b9fb81f7c8d572e8b8bd5b9953f6766 100644 (file)
@@ -352,6 +352,16 @@ is output until the first non-zero unit is encountered."
                          (<= (car here) delay)))
              (concat (format "%.2f" (/ delay (car (cddr here)))) (cadr here))))))
 
+(defun time-zone-format (seconds)
+  "Format SECONDS as a valid time zone string.
+For instance, 3600 is \"+01:00\"."
+  (format "%s%02d:%02d"
+          (if (< seconds 0)
+              "-"
+            "+")
+          (/ (abs seconds) 3600)
+          (mod (abs seconds) 3600)))
+
 (defun date-days-in-month (year month)
   "The number of days in MONTH in YEAR."
   (if (= month 2)
index b46a247cd30c8f00719aa03d9399959b009b1d8b..51250ce5e7a3491da97c717de31de56ea371ad07 100644 (file)
     (should (equal (decoded-time-add time (mdec :zone -7200))
                    '(12 15 14 8 7 2019 1 t 7200)))))
 
+(ert-deftest test-time-zone-format ()
+  (should (equal (time-zone-format 3600)
+                 "+01:00"))
+  (should (equal (time-zone-format -7200)
+                 "-02:00")))
+
 (require 'ert)
 
 ;;; time-date-tests.el ends here