From 4bc48529523159c55dcd62d5a6be60521540b371 Mon Sep 17 00:00:00 2001 From: Sam Steingold Date: Mon, 12 May 2014 22:09:13 +0000 Subject: [PATCH] time-date.el (seconds-to-string): New function to pretty print time delay in seconds --- lisp/ChangeLog | 5 +++++ lisp/time-date.el | 17 +++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f4c45b6ae..05be2112c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2014-05-12 Sam Steingold + + * time-date.el (seconds-to-string): New function to pretty print time + delay in seconds. + 2014-05-09 Katsumi Yamaoka * gnus-art.el (gnus-mm-display-part): Don't put article out of sight diff --git a/lisp/time-date.el b/lisp/time-date.el index 3d62c5d78..eb534b6b8 100644 --- a/lisp/time-date.el +++ b/lisp/time-date.el @@ -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) -- 2.25.1