From 9ce1b62f960e9e0bd9d21f2e6ef3968880080e9d Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Mon, 11 Feb 2008 00:28:31 +0000 Subject: (emacs-uptime): New function. --- lisp/calendar/time-date.el | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'lisp/calendar/time-date.el') diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el index 58444041725..1f325379a48 100644 --- a/lisp/calendar/time-date.el +++ b/lisp/calendar/time-date.el @@ -254,6 +254,40 @@ If DATE is malformed, return a time value of zeros." (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 -- cgit v1.2.1