diff lisp/calendar/time-date.el @ 91737:f9b4ba32c775

(emacs-uptime): New function.
author Glenn Morris <rgm@gnu.org>
date Mon, 11 Feb 2008 00:28:20 +0000
parents 974a828870fe
children 41b16ef40f59
line wrap: on
line diff
--- a/lisp/calendar/time-date.el	Mon Feb 11 00:24:16 2008 +0000
+++ b/lisp/calendar/time-date.el	Mon Feb 11 00:28:20 2008 +0000
@@ -254,6 +254,40 @@
       (date-to-time date)
     (error '(0 0))))
 
+
+;;;###autoload
+(defun emacs-uptime ()
+  "Return a string giving the uptime of this instance of Emacs."
+  (interactive)
+  (let* ((sec (time-to-seconds
+               (time-subtract (current-time) emacs-startup-time)))
+         (prev)
+         (num)
+         (str
+          ;; cf article-make-date-line in gnus-art.
+          ;; Worth having a general time-date `format-seconds'
+          ;; function that converts a number of seconds into so many
+          ;; years, hours, etc?
+          (mapconcat
+           (lambda (unit)
+             (if (zerop (setq num (floor sec (cdr unit))))
+                 ""
+               (setq sec (- sec (* num (cdr unit))))
+              (prog1
+                  (format "%s%d %s%s" (if prev ", " "") num
+                          (symbol-name (car unit))
+                          (if (= num 1) "" "s"))
+                (setq prev t))))
+           '((year   . 31536000)        ; 365-day year
+             (day    .    86400)
+             (hour   .     3600)
+             (minute .       60)
+             (second .        1))
+           "")))
+    (if (interactive-p)
+        (message "%s" str)
+      str)))
+
 (provide 'time-date)
 
 ;;; arch-tag: addcf07b-b20a-465b-af72-550b8ac5190f