time-date.el (seconds-to-string): New function to pretty print time delay in seconds
authorSam Steingold <sds@gnu.org>
Mon, 12 May 2014 22:09:13 +0000 (22:09 +0000)
committerKatsumi Yamaoka <yamaoka@jpl.org>
Mon, 12 May 2014 22:09:13 +0000 (22:09 +0000)
lisp/ChangeLog
lisp/time-date.el

index f4c45b6..05be211 100644 (file)
@@ -1,3 +1,8 @@
+2014-05-12  Sam Steingold  <sds@gnu.org>
+
+       * time-date.el (seconds-to-string): New function to pretty print time
+       delay in seconds.
+
 2014-05-09  Katsumi Yamaoka  <yamaoka@jpl.org>
 
        * gnus-art.el (gnus-mm-display-part): Don't put article out of sight
index 3d62c5d..eb534b6 100644 (file)
@@ -388,6 +388,23 @@ This function does not work for SECONDS greater than `most-positive-fixnum'."
                  t t string))))))
   (replace-regexp-in-string "%%" "%" string))
 
+(defvar seconds-to-string
+  (list (list 1 "ms" 0.001)
+        (list 100 "s" 1)
+        (list (* 60 100) "m" 60.0)
+        (list (* 3600 30) "h" 3600.0)
+        (list (* 3600 24 400) "d" (* 3600.0 24.0))
+        (list nil "y" (* 365.25 24 3600)))
+  "Formatting used by the function `seconds-to-string'.")
+;;;###autoload
+(defun seconds-to-string (delay)
+  "Convert the time interval in seconds to a short string."
+  (cond ((> 0 delay) (concat "-" (seconds-to-string (- delay))))
+        ((= 0 delay) "0s")
+        (t (let ((sts seconds-to-string) here)
+             (while (and (car (setq here (pop sts)))
+                         (<= (car here) delay)))
+             (concat (format "%.2f" (/ delay (third here))) (second here))))))
 
 (provide 'time-date)